php 使用prepare函数时$stmt变量包含空值[duplicate]

xbp102n0  于 2022-12-02  发布在  PHP
关注(0)|答案(1)|浏览(106)

此问题在此处已有答案

When to use single quotes, double quotes, and backticks in MySQL(13个答案)
What to do with mysqli problems? Errors like mysqli_fetch_array(): Argument #1 must be of type mysqli_result and such(1个答案)
四年前就关门了。

$stmt变量为空意味着它不包含我的查询,即使创建了到数据库的连接($con)。

致命错误:未捕获的错误:在C:\xampp\htdocs\WebServersAndroid\includes\DbOperations中的布尔值上调用成员函数bind_param()。(12)您可以在这里找到您想要的页面。在第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";
        }

    }
    }
hkmswyz6

hkmswyz61#

我认为这段代码会产生很多错误。
$query = "INSERT INTO 'test_col'('name','usn') VALUES (?,?); ";
values (?, ?)预期稍后会系结2个值。
而这段代码

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

绑定3个在绑定中触发错误的参数。
接下来,MySQL将单引号/双引号的使用解释为字符串文字,如in documantation所示
因此,'test_col'('name','usn')会导致错误,您应该使用'或只保留表和列的名称,而不是使用单引号('),它会将表名、数据库名和/或列名转换为字符串而不是引用。

相关问题