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