Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.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 SQL语句中的bindValue()引发异常_Php_Sql_Pdo - Fatal编程技术网

Php SQL语句中的bindValue()引发异常

Php SQL语句中的bindValue()引发异常,php,sql,pdo,Php,Sql,Pdo,我正在尝试将值绑定到此SQL语句: $sQuery = $db->prepare('SELECT * FROM products WHERE name = "Hello" AND category = :sCategory AND material = 3 AND size = 20'); $sQuery->bindValue(':sName', $_POST["txtName"]); $sQuery->bindValue(':sCategory', 5

我正在尝试将值绑定到此SQL语句:

    $sQuery = $db->prepare('SELECT * FROM products WHERE name = "Hello" AND category = :sCategory AND material = 3 AND size = 20');
    $sQuery->bindValue(':sName', $_POST["txtName"]);
    $sQuery->bindValue(':sCategory', 5);
    $sQuery->bindValue(':sMaterial', $_POST["txtMaterial"]);
    $sQuery->bindValue(':sSize', $_POST["txtSize"]);
    $sQuery->execute();
    $aOrders = $sQuery->fetchAll();
但当我在代码中使用占位符sCategory时,它总是抛出一个异常。如果我把5直接放在语句中,它就会运行,但如果我这样做,它就不会运行。有人能帮我解释一下为什么会这样吗

$sQuery = $db->prepare('SELECT * FROM products WHERE name = :sName AND category = :sCategory AND material = :sMaterial AND size = :sSize');
$sQuery->bindValue(':sName', $_POST["txtName"]);
$sQuery->bindValue(':sCategory', 5);
$sQuery->bindValue(':sMaterial', $_POST["txtMaterial"]);
$sQuery->bindValue(':sSize', $_POST["txtSize"]);
$sQuery->execute();
$aOrders = $sQuery->fetchAll();
我知道你说过你一次测试一个bindValue。但为了做到这一点,您必须删除bindValue。要进行测试,请尝试以下操作:

$sQuery = $db->prepare('SELECT * FROM products WHERE name = "Hello" AND category = :sCategory AND material = 3 AND size = 20');
$sQuery->bindValue(':sCategory', 5);
$sQuery->execute();
$aOrders = $sQuery->fetchAll();

如果这是您的实际代码,那么您绑定的值比查询要求的要多…我知道,它们都应该是绑定的,但它不起作用,所以我单独测试了类别1。单独测试每个值是个好主意,但是当您这样做时,您需要注释掉未使用的bindValue语句,否则您将从它们那里得到一个错误。