"Execute Array" 数据库问题 PHP

"Execute Array" problem from Database PHP

作为初学者,我在从数据库执行数组时遇到了问题。

我的代码:

    $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_id$user_id 没有任何问题

但在 shop_users_accounting table 中我有更多列,例如 pay_ordersamount

我试过这样做 $operation_query->execute( array($operation_id, $user_id, $pay_orders) ); 但是 IF 函数执行后我得到 false

我已经试过了$operation_query = $db_link->prepare('SELECT * FROM `shop_users_accounting` WHERE `id` = ? AND `active` = 0 AND `user_id` = ? AND `pay_orders` = ?;');,结果是一样的,如果函数被执行,我得到 false

问题是,我做错了什么,以及如何从数据库中获取 pay_ordersamount 而不会获取 False

自己解决

谢谢

首先,我将定义连接,将请求添加到 return 来自 mysql 的错误:

$pdo = new PDO('mysql:host=127.0.0.1;dbname=mydbname', $db_user, $db_pass, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));

你看到最后一个 array() 了吗?它告诉 mysql 到 return 错误。 然后我将所有内容都放在 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 并且只会回显错误消息。如果查询失败,您要做的是将您的逻辑放在 catch 块中,如果您的查询成功,则将您的逻辑放在 catch 块之后。

您遇到的错误在您的代码中并不明显,但可能是由于您向查询传递的值不正确(数组元素的值)。用于将数组传递给查询(所谓的执行数组)的语法没有严格错误。 我还建议在查询中使用命名参数,并使用 bindParams() 来获得包含许多参数的更易读的代码。有关如何构建准备好的语句的更多详细信息,请参阅 here