【问题标题】:Error php sql: Call to a member function bind_param() on boolean错误 php sql:在布尔值上调用成员函数 bind_param()
【发布时间】:2017-11-26 21:26:08
【问题描述】:

当我尝试运行这个函数时,我得到:

致命错误:未捕获错误: 调用成员函数 bind_param() on /var/www/html/include/function/token.php:73 中的布尔值堆栈跟踪:#0 /var/www/html/view.php(14): dirTOperm('/var/www/html/u...') #1 {main} 在第 73 行的 /var/www/html/include/function/token.php 中抛出

函数如下:

function dirTOperm($dir){
    global $mysql_ip, $mysql_user, $mysql_pass, $mysql_database_name,$_SESSION;


    $conn = new mysqli($mysql_ip, $mysql_user, $mysql_pass, $mysql_database_name);
    $stmt = $conn->prepare('SELECT * FROM token-perm WHERE directory = ?');
    $stmt->bind_param('s', $dir);
    $stmt->execute();
    $result = $stmt->get_result();
    $checktoken = $result->num_rows;
    $row = $result->fetch_assoc();
    $stmt->close();
    $conn->close();

    if ($checktoken == 0) {
      $permtoken = GenerateRandomString(512);

      $conn = new mysqli($mysql_ip, $mysql_user, $mysql_pass, $mysql_database_name);
      $stmt = $conn->prepare('INSERT INTO token-perm (token,directory,date) VALUES ("?","?","?")');
      $stmt->bind_param('sss', $permtoken,$dir,date('d-m-Y H:m'));
      $stmt->execute();
      $stmt->close();
      $conn->close();
      return $permtoken;
    }else {
      return $row['token'];
    }
  }

连接数据是正确的,尝试在google上搜索我还没有起来解决,你能帮我吗?

【问题讨论】:

  • 你需要检查prepare()的结果,它可能会返回false,见:php.net/manual/en/mysqli.prepare.php
  • 在表名中使用破折号有点...... emm ...粗糙。
  • 注意:您不需要在? 周围使用引号",准备好的语句将为您打包变量。
  • 即使没有 " 问题也无法解决
  • 我知道,这只是一个说明而不是解决方案。无论如何在prepare语句之后做echo $conn->error看看错误

标签: php mysql sql mysqli


【解决方案1】:

切勿在表名中使用破折号(-)

【讨论】:

    猜你喜欢
    • 2017-01-14
    • 2015-02-08
    • 1970-01-01
    • 1970-01-01
    • 2016-05-18
    • 2016-05-26
    • 1970-01-01
    相关资源
    最近更新 更多