2011-02-05 5 views
0

에 두 개의 서로 다른 분야에서 두 개의 변수를 사용하여 검색 할 수 있습니다 방법 - 나는 그것이 작동 할 수 없습니다 :나는 이것이 내가 가지고있는 코드입니다 MySQL의

<?php require_once('../Connections/User.php'); ?> 
<?php 
if (!function_exists("GetSQLValueString")) { 
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{ 
    if (PHP_VERSION < 6) { 
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue; 
    } 

    $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue); 

    switch ($theType) { 
    case "text": 
     $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; 
     break;  
    case "long": 
    case "int": 
     $theValue = ($theValue != "") ? intval($theValue) : "NULL"; 
     break; 
    case "double": 
     $theValue = ($theValue != "") ? doubleval($theValue) : "NULL"; 
     break; 
    case "date": 
     $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; 
     break; 
    case "defined": 
     $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue; 
     break; 
    } 
    return $theValue; 
} 
} 

$editFormAction = $_SERVER['PHP_SELF']; 
if (isset($_SERVER['QUERY_STRING'])) { 
    $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']); 
} 

if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) { 
    $updateSQL = sprintf("UPDATE grade SET GSCode=%s, GSem=%s, GYear=%s, Grade=%s WHERE GStudNo=%s", 
         GetSQLValueString($_POST['GSCode'], "text"), 
         GetSQLValueString($_POST['GSem'], "text"), 
         GetSQLValueString($_POST['GYear'], "text"), 
         GetSQLValueString($_POST['Grade'], "text"), 
         GetSQLValueString($_POST['GStudNo'], "text")); 

    mysql_select_db($database_User, $User); 
    $Result1 = mysql_query($updateSQL, $User) or die(mysql_error()); 
} 

mysql_select_db($database_User, $User); 
$query_Recordset1 = sprintf("SELECT * 
      FROM grade 
      WHERE GSCode = '%s' AND GStudNo = '%s'", 
     mysql_real_escape_string($_POST['a']), 
     mysql_real_escape_string($_POST['b'])); 

$Recordset1 = mysql_query($query_Recordset1, $User) or die(mysql_error()); 
$row_Recordset1 = mysql_fetch_assoc($Recordset1); 
$totalRows_Recordset1 = mysql_num_rows($Recordset1); 
$query_Recordset1 = "SELECT * FROM grade WHERE GSCode = '$_POST[a]' $$ GStudNo = '$_POST[b]'"; 
$Recordset1 = mysql_query($query_Recordset1, $User) or die(mysql_error()); 
$row_Recordset1 = mysql_fetch_assoc($Recordset1); 
$totalRows_Recordset1 = mysql_num_rows($Recordset1); 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
</head> 

<body> 
<form action="<?php echo $editFormAction; ?>" method="post" name="form1" id="form1"> 
    <table align="center"> 
    <tr valign="baseline"> 
     <td nowrap="nowrap" align="right">GStudNo:</td> 
     <td><?php echo $row_Recordset1['GStudNo']; ?></td> 
    </tr> 
    <tr valign="baseline"> 
     <td nowrap="nowrap" align="right">GSCode:</td> 
     <td><input type="text" name="GSCode" value="<?php echo htmlentities($row_Recordset1['GSCode'], ENT_COMPAT, 'utf-8'); ?>" size="32" /></td> 
    </tr> 
    <tr valign="baseline"> 
     <td nowrap="nowrap" align="right">GSem:</td> 
     <td><input type="text" name="GSem" value="<?php echo htmlentities($row_Recordset1['GSem'], ENT_COMPAT, 'utf-8'); ?>" size="32" /></td> 
    </tr> 
    <tr valign="baseline"> 
     <td nowrap="nowrap" align="right">GYear:</td> 
     <td><input type="text" name="GYear" value="<?php echo htmlentities($row_Recordset1['GYear'], ENT_COMPAT, 'utf-8'); ?>" size="32" /></td> 
    </tr> 
    <tr valign="baseline"> 
     <td nowrap="nowrap" align="right">Grade:</td> 
     <td><input type="text" name="Grade" value="<?php echo htmlentities($row_Recordset1['Grade'], ENT_COMPAT, 'utf-8'); ?>" size="32" /></td> 
    </tr> 
    <tr valign="baseline"> 
     <td nowrap="nowrap" align="right">&nbsp;</td> 
     <td><input type="submit" value="Update record" /></td> 
    </tr> 
    </table> 
    <input type="hidden" name="MM_update" value="form1" /> 
    <input type="hidden" name="GStudNo" value="<?php echo $row_Recordset1['GStudNo']; ?>" /> 
</form> 
<p>&nbsp;</p> 
</body> 
</html> 
<?php 
mysql_free_result($Recordset1); 
?> 
+0

오류 메시지? 그리고'SQL injections '방지에 대해 생각하십시오 (-> http://de.php.net/mysql_real_escape_string) – thedom

+0

의도 된 최종 SQL 쿼리가 아닌 쿼리를 생성하는 실제 PHP를 게시하십시오. –

답변

1

사용하는 대신 & &

그리고 당신의 변수를 보호하기 위해 sprintf를를 사용하는의.

mysql_query("select * from table where `one`='$_POST[one]' and `two`='$_POST[two]'") or die (mysql_error()); 
+0

[% u는 정수입니다 - 샘플은 문자열 (% s)을 사용하고 있습니다.] (http : /php.net/manual/en/function.sprintf.php). 또한 mysql_real_escape_string에 POST 변수 검색을 래핑합니다. –

+0

죄송합니다. GSCode를 가정하고 GStudNo는 정수였습니다. 매우 잘못되었습니다. – Nabab

+0

여전히 동일한 오류가 발생합니다. SQL 문에서 오류가 발생했습니다. 올바른 구문을 보려면 MySQL 서버 버전에 해당하는 설명서를 확인하십시오. 줄에서 '$$ GStudNo = '07 -08-0066' '근처에서 사용하십시오 – PiDO

2

SQL은 상태 AND하지 && 사용합니다.

+0

여전히 작동하지 않습니다. _ SQL 구문에 오류가 있습니다. '$$ GStudNo = '07 -08-0066' '1_ – PiDO

+0

'$$'근처에서 사용할 올바른 구문을 보려면 MySQL 서버 버전에 해당하는 설명서를 확인하십시오. * Really? * –

+0

그렇습니다. 나는이 오류를 이해하지 못한다 : ( – PiDO

0

난 당신이

"SELECT * FROM grade WHERE GSCode = '{$_POST['a']}' and GStudNo = '{$_POST['b']}'" 

을 의미 생각뿐만 아니라 '과'뿐만 아니라 포스트 값을 포함. 아니면 실제로 문자 그대로의 텍스트를 찾으려고 했습니까? '$ _POST [s]'? PHP 문자열 파서가 탈출하지 않으면 $_POST을 평가하려고하기 때문에 게시 한 방식으로는 여전히 작동하지 않습니다.

sprintf("SELECT * 
      FROM grade 
      WHERE GSCode = '%s' AND GStudNo = '%s'", 
     mysql_real_escape_string($_POST['a']), 
     mysql_real_escape_string($_POST['b'])); 
+0

그것은 여전히 ​​작동하지 않는다 .. 다시 같은 오류가 발생한다 : ( – PiDO

+0

그리고 어떤 오류입니까? – GolezTrol

1

사용하지 & & :

관련 문제