$ stmt变量使用prepare函数包含null

时间:2018-10-16 23:17:42

标签: php

$ stmt 变量为null表示即使创建了到数据库的连接($ con),它也不包含我的查询。

  

致命错误:未捕获错误:在C:\ xampp \ htdocs \ WebServersAndroid \ includes \ DbOperations.php:24堆栈中的布尔值上调用成员函数bind_param()堆栈跟踪:#0 C:\ xampp \ htdocs \ WebServersAndroid \ v1 \ registerUser.php(12):DbOperation-> createUser('syed','1997')#1 {main}放在第24行的C:\ xampp \ htdocs \ WebServersAndroid \ includes \ DbOperations.php中

bind_param中发生错误,可能是因为没有查询来存储数据。请告诉我问题出在哪里,为什么$ stmt为空。谢谢     

    class DbOperation{

        private $con;

        function __construct(){

            require_once dirname(__FILE__).'/DbConnect.php';

            $db = new DbConnect();

            $this->con = $db->connect();

        }


        function createUser($name,$usn){

        $query = "INSERT INTO 'test_col'('name','usn') VALUES (?,?); ";
        $stmt = $this->con->prepare($query);
        echo $stmt;
        if($stmt != null)
        {
            $stmt->bind_param("ss",$name,$usn);
        if($stmt -> execute())
        {
            return true;
        }else{
            return false;
        }

        }
        else{
            echo "in else";
        }

    }
    }

1 个答案:

答案 0 :(得分:-1)

我认为这段代码会产生很多错误。

$query = "INSERT INTO 'test_col'('name','usn') VALUES (?,?); ";

values (?, ?)希望以后绑定2个值。

这段代码

`$stmt->bind_param("ss",$name,$usn);`

绑定3个触发绑定错误的参数。

接下来,MySQL将使用单引号或双引号引起来的字符串解释为in documantation

因此,'test_col'('name','usn')会导致错误,您应该使用`或仅保留表名和列名,而不要使用单引号(')来翻译表名,数据库名称和/或列名称转换为字符串而不是引用。