代码如下
<?php
$db=new mysqli("localhost","knife","123456","knife_app");
if(mysqli_connect_errno())
{
echo "不能链接数据库,请检查!";
exit;
}
$query = "insert into books values(?, ?, ?, ?)";
$stmt = $db->prepare($query);
$stmt->bind_param("sssd", "010-455-789", "fish", "lover", "35.6");
$stmt->execute();
echo $stmt->affected_rows."已插入数据库!";
$stmt->close();
?>提示错误:
Fatal error: Cannot pass parameter 2 by reference in D:\PHP_APP\DB\db_insert_prepared.php on line 10第10行是 $stmt->bind_param("sssd", "010-455-789", "fish", "lover", "35.6");帮我看看什么错误,要怎么调试呢?

解决方案 »

  1.   

    您的insert中有4个问号,您穿了5个参数,看一下,是不是这个原因啊?
      

  2.   

    $db=new mysqli("localhost","knife","123456","knife_app");
    if(mysqli_connect_errno())
    {
        echo "不能链接数据库,请检查!";
        exit;
    }
    $query = "insert into books( xx,xx,xx,xx ) values(?, ?, ?, ?)";   // 这里要这样
    $stmt = $db->prepare($query);
    $stmt->bind_param("sssd", "010-455-789", "fish", "lover", "35.6");
    $stmt->execute();
    echo $stmt->affected_rows."已插入数据库!";
    $stmt->close();
      

  3.   


    我改成这样
    $query = "insert into books(isbn,author,title,price) values(?, ?, ?, ?)";
    错误提示:Fatal error: Cannot pass parameter 2 by reference in D:\PHP_APP\DB\db_insert_prepared.php on line 10
      

  4.   

    $stmt->bind_param( "010-455-789", "fish", "lover", "35.6" );  // 你那个具体怎么用我也不知道,第一个是干吗用的? 
      

  5.   


    $stmt->bind_param("sssd", "010-455-789", "fish", "lover", "35.6");
    "sssd"作用是告诉PHP四个数据类型依次是字符,字符,字符,双精度
      

  6.   

    貌似不是这么用的吧$stmt->execute(array("sssd", "010-455-789", "fish", "lover", "35.6"));
    或者
    $stmt->bind_param(1,"sssd");
    $stmt->bind_param(2,"010-455-789");
    $stmt->bind_param(3,"fish");
    $stmt->bind_param(4,"lover");
    $stmt->bind_param(5,"35.6");我也是初学