我收到一篇帖子,并且只有在帖子收到的变量值存在于表格的特定列中时才想要做一些操作。所以我这样做了:
$pedidoID = $_POST["pedidoID"];
$con = mysql_connect("127.0.0.1", "root", "password") or die("Could not connect: " . mysql_error());
$result = mysql_query('SELECT id FROM listapagamento WHERE numeroPedido = "pedidoID"');
if(mysql_num_rows($result) == 0) {
//Some actions
}
因此,如果pedidoID中的值不存在于numeroPedido列中,它将执行操作,因为结果将为0(因为没有找到行)。
在两种情况下(如果值存在或不存在),$ result将以bool(false)的形式返回。我想我的问题是我如何使用SELECT中的变量来比较列。我试图在SELECT中插入$ _POST [" pedidoID"],但我的语法也错了。
有没有人知道要使用的正确语法?
答案 0 :(得分:0)
现在您正在将列的值与固定字符串进行比较,因此您的错误。将变量放在代码中。
$pedidoID = $_POST["pedidoID"];
$con = mysql_connect("127.0.0.1", "root", "Password") or die("Could not connect: " . mysql_error());
$result = mysql_query('SELECT id FROM listapagamento WHERE numeroPedido = "' . $pedidoID . '"');
if(mysql_num_rows($result) == 0) {
//Some actions
}
HOWEVER 此代码对SQL注入攻击持开放态度,在使用之前应始终清理任何输入。按照建议,它看起来像:
$pedidoID = $_POST["pedidoID"];
$con = mysql_connect("127.0.0.1", "root", "Password") or die("Could not connect: " . mysql_error());
$result = mysql_query('SELECT id FROM listapagamento WHERE numeroPedido = "' . mysqli_real_escape_string($pedidoID) . '"');
if(mysql_num_rows($result) == 0) {
//Some actions
}
答案 1 :(得分:0)
尝试:
$pedidoID = mysql_real_escape_string($_POST["pedidoID"]);
$con = mysql_connect("127.0.0.1", "root", "password") or die("Could not connect: " . mysql_error());
mysql_select_db('<your_database_name>', $con);
$result = mysql_query("SELECT id FROM listapagamento WHERE numeroPedido = 'pedidoID'");
if(mysql_num_rows($result) == 0) {
//Some actions
}
答案 2 :(得分:0)
当你编写处理数据库的代码时,总是确定它不容易受到sql注入攻击。现在,对于您的情况,您必须在使用之前处理post元素:
OnLoad()
然后,对于您的错误,您还没有选择数据库:
$pedidoID = mysql_real_escape_string ($_POST["pedidoID"]);