数据库PHP中的“执行数组”问题

jk9hmnmh  于 2022-10-22  发布在  PHP
关注(0)|答案(1)|浏览(204)

由于我是初学者,我在从数据库执行数组时遇到了一个问题。
我的代码:

$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表中,我有更多的列,如pay_ordersamount
我尝试过像这样做$operation_query->execute( array($operation_id, $user_id, $pay_orders) );,但是IF函数被执行了,我得到了false
我试过$operation_query = $db_link->prepare('SELECT * FROMshop_users_accountingWHEREid= ? ANDactive= 0 ANDuser_id= ? ANDpay_orders= ?;');,结果是一样的,IF函数被执行,我得到了false
问题是,我做错了什么,以及如何从DB中获取pay_ordersamount而不获取False

xbp102n0

xbp102n01#

首先,我将定义添加请求的连接,以从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一,并且只会回显错误消息。如果查询失败,您将在catch块中放入您的逻辑,如果查询成功,catch块将在cath块中放入逻辑。
您得到的错误在代码中很模糊,但可能是由于您错误地传递给查询的值(数组元素的值)造成的。用于将数组传递给查询的语法没有严格的错误(您称之为执行数组)。我还建议在查询和bindParams()中使用命名参数,以使代码具有更多的可读性。请参阅here以了解有关如何构建准备好的语句的更多详细信息。

相关问题