我有一个非常简单的SQL查询,由于某种原因无效。你能看看并告诉它有什么问题。谢谢!
$txn_id = $_POST['txn_id'];
$sql = "SELECT * FROM payments WHERE payments.num_operac= " . $txn_id;
$txnid_exists = mysql_query($sql);
error_log("Duplicate txn id check query failed:<br>" . mysql_error() . "<br>" . mysql_errno());
这是我得到的
[2014年4月18日12:24:14 UTC]复制txn id检查查询 失败:
未知列'0GF60424XU536804C'在'哪里 条款“1054
答案 0 :(得分:4)
$sql = "SELECT * FROM payments WHERE payments.num_operac= " . $txn_id;
到
$sql = "SELECT * FROM payments WHERE payments.num_operac= '".$txn_id."'";
字符串数据必须用单引号括起来。
您正在使用已弃用的mysql_
函数并且已广泛用于SQL注入。
开始使用mysqli_
或PDO
准备好的声明。
或至少
$txn_id = mysql_real_escape_string($_POST['txn_id']);
直到您了解mysqli_
或PDO
http://www.php.net/manual/en/mysqli.quickstart.prepared-statements.php
答案 1 :(得分:1)
你需要这个:
它告诉您SQL语句不正确,问题是语句的WHERE clause
。
您应该使用single quote
,例如我的查询''
.....payments.num_operac= '".$txn_id."'";