传递字符串时PHP MySQL查询错误

时间:2012-06-19 14:25:30

标签: php mysql

您好我遇到的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]; 

2 个答案:

答案 0 :(得分:5)

尝试:

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

而不是:

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

您还可以添加:

mysql_escape_string($_SESSION['id'])

答案 1 :(得分: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'])