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 回答