如何使用 PDO mysql 连接修复 PHP 中的“bind_param()”错误

如果有人可以帮助我解决正在发生的问题,我将非常感激。使用 PDO 连接的 bind_param () 会出现错误。


致命错误:在第 25 行调用未定义的方法 PDOStatement::bind_param()


setlocale(LC_MONETARY,"en_US");

if(isset($_POST["id"])) {

foreach($_POST as $key => $value){

    $product[$key] = filter_var($value, FILTER_SANITIZE_STRING);

}   


$statement = app('db')->prepare("SELECT as_produtos.nome, as_produtos.preco FROM as_produtos WHERE id = ? LIMIT 1");

$statement->bind_param('s', $product['id']);

$statement->execute();

$statement->bind_result($product_name, $product_price);


while($statement->fetch()){ 

    $product["product_name"] = $product_name;

    $product["product_price"] = $product_price;     

    if(isset($_SESSION["products"])){ 

        if(isset($_SESSION["products"][$product['id']])) {              

            $_SESSION["products"][$product['id']]["product_qty"] = $_SESSION["products"][$product['id']]["product_qty"] + $_POST["product_qty"];                

        } else {

            $_SESSION["products"][$product['id']] = $product;

        }           

    } else {

        $_SESSION["products"][$product['id']] = $product;

    }   

}   

$total_product = count($_SESSION["products"]);

die(json_encode(array('products'=>$total_product)));

}


if(isset($_GET["remove_code"]) && isset($_SESSION["products"])) {

$product_code  = filter_var($_GET["remove_code"], FILTER_SANITIZE_STRING);

if(isset($_SESSION["products"][$product_code])) {

    unset($_SESSION["products"][$product_code]);

}   

$total_product = count($_SESSION["products"]);

die(json_encode(array('products'=>$total_product)));

}


if(isset($_GET["update_quantity"]) && isset($_SESSION["products"])) {   

if(isset($_GET["quantity"]) && $_GET["quantity"]>0) {       

    $_SESSION["products"][$_GET["update_quantity"]]["product_qty"] = $_GET["quantity"]; 

}

$total_product = count($_SESSION["products"]);

die(json_encode(array('products'=>$total_product)));

}



qq_笑_17
浏览 176回答 2
2回答

qq_花开花谢_0

我猜你是想打电话给bindParam。也没有名为 bind_result 的函数(检查:PDO 上 bind_result 的等价物是什么)。此外,您试图绑定参数 (':s'),但是有 '?' 在您的请求字符串中。$statement = app('db')->prepare("SELECT as_produtos.nome, as_produtos.preco FROM as_produtos WHERE id = :s LIMIT 1");   $statement->bindParam(':s', $product['id']);或者使用bindValue。

绝地无双

正确的代码(购物车)确定:setlocale(LC_MONETARY,"pt_BR");# add products in cart if(isset($_POST["id"])) {foreach($_POST as $key => $value) :$product[$key] = filter_var($value, FILTER_SANITIZE_STRING);endforeach;  $statement = app('db')->prepare("SELECT as_produtos.nome, as_produtos.preco FROM  as_produtos WHERE id = :id LIMIT 1"); $statement->bindParam(':id', $product['id'], PDO::PARAM_INT); $statement->execute(); foreach($statement as $dados_produto) :$product["product_name"] = $dados_produto["nome"];$product["product_price"] = $dados_produto["preco"];if(isset($product["product_name"])){     if(isset($_SESSION["products"][$product['id']])) {                      $_SESSION["products"][$product['id']]["product_qty"] = $_SESSION["products"][$product['id']]["product_qty"] + $_POST["product_qty"];    } else {        $_SESSION["products"][$product['id']] = $product;    }   } else {    $_SESSION["products"][$product['id']] = $product;}   endforeach;$total_product = count($_SESSION["products"]);die(json_encode(array('products'=>$total_product)));}# Remove products from cartif(isset($_GET["remove_code"]) && isset($_SESSION["products"])) {$product_code  = filter_var($_GET["remove_code"], FILTER_SANITIZE_STRING);if(isset($_SESSION["products"][$product_code])) {unset($_SESSION["products"][$product_code]);}   $total_product = count($_SESSION["products"]);die(json_encode(array('products'=>$total_product)));}# Update cart product quantityif(isset($_GET["update_quantity"]) && isset($_SESSION["products"])) {   if(isset($_GET["quantity"]) && $_GET["quantity"]>0) {       $_SESSION["products"][$_GET["update_quantity"]]["product_qty"] = $_GET["quantity"];  }$total_product = count($_SESSION["products"]);die(json_encode(array('products'=>$total_product)));}   
打开App,查看更多内容
随时随地看视频慕课网APP