&引用;执行数组";数据库PHP的问题

&引用;执行数组";数据库PHP的问题,php,pdo,Php,Pdo,因为我是初学者,所以在从数据库执行数组时遇到了问题 我的代码: $operation_id = (int)$_GET["operation"]; $operation_query = $db_link->prepare('SELECT * FROM `shop_users_accounting` WHERE `id` = ? AND `active` = 0 AND `user_id` = ?;'); $operation_query->execute(

因为我是初学者,所以在从数据库执行数组时遇到了问题

我的代码:

    $operation_id = (int)$_GET["operation"];
$operation_query = $db_link->prepare('SELECT * FROM `shop_users_accounting` WHERE `id` = ? AND `active` = 0 AND `user_id` = ?;');
$operation_query->execute( array($operation_id, $user_id) );
$operation = $operation_query->fetch();
if($operation == false)
{
    $answer = array();
    $answer["result"] = false;
    $answer["code"] = 2;
    exit(json_encode($answer));
}
现在,我可以毫无问题地回显
$operation\u id
$user\u id

但是在
shop\u users\u accounting
表中,我有更多的列,比如
pay\u orders
amount

我试过这样做
$operation\u query->execute(数组($operation\u id,$user\u id,$pay\u orders))
我试过
$operation\u query=$db\u link->prepare('SELECT*FROM'shop\u users\u accounting',其中'id`=?和'active`=0,'user\u id`=?和'pay\u orders`=?)
问题是,我做错了什么,以及如何从DB获得
付款单
金额
,而不出现错误

我自己决定


谢谢

首先,我要定义连接,添加从mysql返回错误的请求:

$pdo = new PDO('mysql:host=127.0.0.1;dbname=mydbname', $db_user, $db_pass, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
看到最后一个数组()了吗?它告诉mysql返回错误。 然后,我将所有内容都放在try-catch块中,以便处理错误:

try{
    $operation_query = $db_link->prepare('SELECT * FROM `shop_users_accounting` WHERE `id` = ? AND `active` = 0 AND `user_id` = ?;');
    $operation_query->execute( array($operation_id, $user_id) );
    $operation = $operation_query->fetch();
}
catch (PDOException $e) {
    echo $e->getMessage();
}
因此,将始终执行try块。只有在出现错误时才会执行catch one,并且只会回显错误消息。如果查询失败,您将在catch块中放入您的逻辑,如果查询成功,则在catch块之后放入您的逻辑

您得到的错误在代码中是模糊的,但可能是由于错误地传递给查询的值(数组元素的值)造成的。将数组传递给查询所使用的语法没有严格的错误(您称之为执行数组)。
我还建议在查询和bindParams()中使用命名参数,使代码具有更多参数,更易于阅读。有关如何生成准备好的报表的更多详细信息,请参阅。

是否确定定义了
$pay\u orders
?not null?您没有绑定参数,可以使用
bind param
进行绑定,因为execute不接受任何参数。看看例子@Ant-its-maybuly
PDO
not
mysqli
@KsaR,这就是当您没有正确添加标记时会发生的情况。。。