WHERE附近的SQL查询语法错误

时间:2014-04-18 12:30:31

标签: mysql sql

我有一个非常简单的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

2 个答案:

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

http://in3.php.net/pdo.prepared-statements

答案 1 :(得分:1)

你需要这个:

它告诉您SQL语句不正确,问题是语句的WHERE clause。 您应该使用single quote,例如我的查询''

.....payments.num_operac= '".$txn_id."'";