Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较PHP变量值和MySQL列值_Php_Mysql - Fatal编程技术网

比较PHP变量值和MySQL列值

比较PHP变量值和MySQL列值,php,mysql,Php,Mysql,我收到一个post,仅当post中接收的变量值存在于表的特定列中时,我才想执行一些操作。所以我这样做了: $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 numer

我收到一个post,仅当post中接收的变量值存在于表的特定列中时,我才想执行一些操作。所以我这样做了:

$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(因为找不到行)

发生的情况是,$结果在这两种情况下都返回为bool(false)(如果值存在或不存在)。我想我的问题是如何使用SELECT中的变量与列进行比较。我试图在SELECT中插入$_POST[“pedidoID”],但我的语法也错了


有人知道要使用的正确语法吗

现在,您正在将列的值与固定字符串进行比较,因此会出现错误。将变量改为放在代码中

$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
}
但是此代码极易受到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
}
尝试:

$pedidoID=mysql\u real\u escape\u字符串($\u POST[“pedidoID”]);
$con=mysql\u connect(“127.0.0.1”、“root”、“password”)或die(“无法连接:”.mysql\u error());
mysql_select_db(“”,$con);
$result=mysql_query(“从listapagamento中选择id,其中numeroPedido='pedidoID'”;
if(mysql_num_rows($result)==0){
//一些行动
}

当您编写处理数据库的代码时,请始终确保它不易受到sql注入的攻击。现在,对于您的情况,您必须在使用post元素之前处理它:

$pedidoID = mysql_real_escape_string ($_POST["pedidoID"]);
那么对于您的bug,您还没有选择数据库:

$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
  die('Connection to Mysql failed : ' . mysql_error());
}
$db_selected = mysql_select_db('database', $link);
if (!$db_selected) {
   die ('connection to database failed : ' .mysql_error());
}
$result = mysql_query("SELECT id FROM listapagamento WHERE numeroPedido=$pedidoID");

从代码示例中删除您的根密码!试试这个,
WHERE numeriopedido=“$pedidoID”
尽快更改您的数据库密码。谢谢大家!密码已更改。若要清理输入,只需使用mysqli\u real\u escape\u string()包装$pedidoID,它仍然显示$result的bool(false)。顺便说一下,$pedidoID是一个字符串(例如:string(9)“ef65eL167”)它是一个字符串。例如:字符串(9)“ef65eL167”,然后尝试:$result=mysql_query(“从listapagamento中选择id,其中numeroPedido='$pedidoID');尝试打印查询,并从PhpMyAdmin或命令行运行它,然后跟踪错误。您还可以使用以下内容进行检查:$result=mysql\u query(“从listapagamento中选择id,其中numeroPedido=”)。mysql\u real\u escape\u string($pedidoID)。“”);您的上一个建议有一个额外的左括号。它可以工作吗?对于我的情况,不可以。是的。很抱歉使用了xtra括号:P。您可以在删除它之后再试一次。如果失败,请尝试干运行查询(来自终端/PhpMyAdmin)like:从清单Apagamento中选择id,其中numeriopedido='ef65eL167';并检查它是否工作
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
  die('Connection to Mysql failed : ' . mysql_error());
}
$db_selected = mysql_select_db('database', $link);
if (!$db_selected) {
   die ('connection to database failed : ' .mysql_error());
}
$result = mysql_query("SELECT id FROM listapagamento WHERE numeroPedido=$pedidoID");