首先,关于这个主题有几个问题要问。然而,最有用的是关于PDO的,我使用的是MySQLi。This one接近了,但我似乎无法让它针对我的情况工作。因此就有了这个问题。
我尝试使用准备好的语句来处理HTML表单中的用户输入。这是在process.php上发布的:
class connect{
public $connection;
function db_connect(){
$this->connection = mysqli_connect(xxx,xxx,xxx,xxx);
return $this->connection;
}
$con = new connect();
$con->db_connect();
$keyword = $_POST["value"];
$query = "SELECT * FROM table WHERE title LIKE ?";
$stmt = $con->prepare($query);
$stmt->bind_param("s", $keyword);
$stmt->execute();
这将抛出错误
致命错误:未捕获错误:在process.php:27中调用未定义的方法connect::prepare()
其中,第27行包含$stmt = $con->prepare($query);
我担心这个问题的答案可能简单得可耻,但我们将非常感谢您的帮助。
发布于 2018-07-11 03:24:51
$con
不包含数据库连接。
它应该是
$connection = $con->db_connect();
db_connect()
返回实际的数据库连接
然后使用$connection
访问prepare()
等mysqli函数
$stmt = $connection->prepare($query);
发布于 2018-07-11 03:24:57
永远不要将$con->db_connect()
的结果赋给变量。$con
仍然是类connect
。将结果赋给变量$connection = $con->db_connect();
并使用$connection
变量,或者使用connect()
类的公共$connection
属性:
$statement = $con->connection->prepare(...);
https://stackoverflow.com/questions/51272668
复制相似问题