【问题标题】:How to fix ‘bind_param() ’ error in PHP with PDO mysql conection如何使用 PDO mysql 连接修复 PHP 中的“bind_param()”错误
【发布时间】:2019-08-11 21:40:40
【问题描述】:

如果有人能帮助我解决正在发生的问题,我非常感激。错误将是使用 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)));
}

【问题讨论】:

  • 如果对您有帮助,请查看此帖子stackoverflow.com/questions/18702772/…
  • bind_param() 来自 mysqli,而不是 PDO。 bindParam() 是你想要的。但是请查看手册,因为它的工作方式并不完全相同
  • 感谢您提供的信息,它帮助很大。

标签: php


【解决方案1】:

我猜你是想打电话给bindParam
也没有称为 bind_result 的函数(检查:What is the equivalent of bind_result on PDO)。
此外,您试图绑定参数(':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

【讨论】:

  • 感谢帮助的朋友,我通过你的解释和调整下面的行解决了问题,非常感谢。
【解决方案2】:

正确的代码(购物车)ok:

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 cart
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)));
}

# Update cart product quantity
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)));
}   

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-15
    • 2013-03-15
    • 1970-01-01
    • 1970-01-01
    • 2020-05-22
    • 1970-01-01
    相关资源
    最近更新 更多