我的查询返回了一个错误
致命错误:调用布尔值上的成员函数bind_param()。。。
尽管我只是在表列中插入字符串,而这些列需要字符串值::INSERT
我的桌子是这样的:

+---------------+--------------+-----+------+---+--+--+
| id            | int(11)      | NO  | PRI  |   |  |  |
| username      | varchar(45)  | YES | UNI  |   |  |  |
| email_address | varchar(45)  | YES | UNI  |   |  |  |
| password      | varchar(255) | YES |      |   |  |  |
| role          | int(11)      | YES | NULL | 0 |  |  |
| dashboard_id  | int(11)      | YES | NULL |   |  |  |
+---------------+--------------+-----+------+---+--+--+

我的Php看起来像这样。。。
    $stmt = $conn->prepare("INSERT INTO users VALUES (?, ?, ?)");
    $stmt->bind_param('sss', $username, $emailAddress, $upassword);

    $username = $_POST['username'];
    $emailAddress = $_POST['email'];
    $upassword = password_hash($_POST['upassword'], PASSWORD_DEFAULT);

    $stmt->execute();

    printf("%d Row inserted.\n", $stmt->affected_rows);

    $stmt->close();
    $conn->close();

更新
我的连接代码:
$conn = new mysqli($db_host,$db_user,$db_password,$db_name);

最佳答案

这在我的本地端工作:-
表格结构:-

Name            Type            Null    Default  Extra
id              int(11)         No      None     AUTO_INCREMENT  Primary Key
user_name       varchar(256)    No      None
email_address   varchar(256)    No      None
password        varchar(256)    No      None
role            int(11)         Yes     0
dashboard_id    int(11)         Yes     0

Php代码:-
<?php
error_reporting(E_ALL);
ini_set('display_errors',1);

$conn = new mysqli('*****','***','****','****');
$conn->set_charset("utf8");
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}
$_POST['username'] = 'anant'; // i have hard coded for checking
$_POST['email'] = 'anant@gmail.in';// i have hard coded for checking
$_POST['upassword'] = 'anant@123';// i have hard coded for checking
if(!empty(trim($_POST['username'])) && !empty(trim($_POST['email'])) && !empty(trim($_POST['upassword']))){
 $username = $_POST['username'];
 $emailAddress = $_POST['email'];
 $upassword = password_hash($_POST['upassword'], PASSWORD_DEFAULT);

  if($stmt = $conn->prepare("INSERT INTO users (user_name,email_address,password) VALUES (?, ?, ?)")){

      $stmt->bind_param('sss', $username, $emailAddress, $upassword);

      $stmt->execute();
      $stmt->close();
    }else{
        echo $conn->error;
    }
  $conn->close();
}else{
  echo "form values are not coming";
}
?>

注:-
我有个问题,就是不能在prepare()中提供列名。当我这样做的时候,我得到了这个错误。
所以当我提供相应的列名时一切都很好,并开始工作。
希望有帮助。

关于php - 插入致命错误函数bind_param(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42248221/

10-14 17:10
查看更多