2

こんにちは私はMySQLクエリが文字列変数を渡さないという問題を抱えています。

$pass数字のみが含まれている場合は正常に機能します。文字が含まれているとCannot execute the queryエラーが発生します。

例:

$pass=123456     //works fine
$pass=z23456     //cannot execute the query
$_SESSION['id']=$pass;           //start session

if (isset($_SESSION['id'])) {

// Query database for user information.
$query = "SELECT RepName FROM RepTable WHERE RepNumber = 
".$_SESSION['id']."";
$result = mysql_query ($query) OR die ('Cannot execute the query.');
$rinfo = mysql_fetch_array ($result);
$RepInfo = $rinfo[0]; 
4

2 に答える 2

5

試す :

'".$_SESSION['id']."'"

それ以外の :

".$_SESSION['id'].""

次を追加することもできます。

mysql_escape_string($_SESSION['id'])
于 2012-06-19T14:26:35.157 に答える
1

mysql で準備済みステートメントを使用する必要があります。より安全です (SQL インジェクションなど)。

http://php.net/manual/en/pdo.prepared-statements.php

例えば:

$stmt = $dbh->prepare("SELECT RepName FROM RepTable WHERE RepNumber = ?");
$stmt->execute($_SESSION['id'])
于 2012-06-19T14:30:18.590 に答える