我正在尝试将mysqli连接传递给类,以便使用预准备语句。但是,我遗漏了一些东西而且它无法正常工作。我做错了什么?
以下代码输出“no”
的index.php
$db_host = 'localhost';
$db_name = 'my_database';
$db_user = 'my_user';
$db_password = 'my_password';
$con = new mysqli($db_host,$db_user,$db_password,$db_name);
if (mysqli_connect_errno())
{
die(mysqli_connect_error());
}
$obj = new Obj( $con );
obj.php
Class Obj
{
public function __construct( mysqli $con )
{
$sql = "SELECT * FOM myTable";
if($con->prepare( $sql ))
{
echo "yes";
}
else
{
echo "no";
}
}
}
答案 0 :(得分:0)
Class Obj {
public function __construct( mysqli $con ) {
$sql = "SELECT * FROM myTable";
if($con->prepare( $sql )) //here, u pass $slq before
{
echo "yes";
}
else {
echo "no";
}
}
}
答案 1 :(得分:0)
如果您未能将mysqli连接传递给您的班级,那么您将在这一行上收到致命错误:
public function __construct( mysqli $con )
^^^^^^
但是不仅构造函数开始运行正常,你甚至可以访问类方法:
if($con->prepare( $sql ))
总而言之,所有发生的事情是mysqli::prepare()
返回false
,因为准备SQL语句时出错。我不熟悉mysql,但您可能会收到mysqli::$error_list或mysqli::$error的确切错误消息:
if($con->prepare( $slq ))
{
echo "yes";
}
else
{
echo "no: " . $con->error;
}
如果SELECT * FOM myTable
是实际查询,我认为这是一个简单的语法错误,因为你拼错了FROM
。