这是我在这里的第一篇文章,我对编程世界也比较陌生。简而言之,在结束我使用 php、mysql 和 javascript/jquery 开发的电子商务网站时,我发现我构建所有查询的方式(使用 mysql_connect)可能会导致 mysql 注入和许多其他讨厌的事情事物。
试图将所有内容“转换”为更安全的 mysqli 准备语句方式,我编写了一个包含从数据库中检索信息所需的所有方法的类,但我不确定我正在制作的方式查询。
一些代码:类构造函数
class Database {
private $DBH;
public function __construct() {
$this->DBH = new mysqli(WEB_SERVER, WEB_USER, WEB_PASS, WEB_NAME);
if ($this->DBH->connect_errno) {
return "Failed to connect to MySQL: (" . $this->DBH->connect_errno . ") " . $this->DBH->connect_error;
exit();
}
}
...
}
...和一个查询示例:
public function get_record_by_param($record, $param, $value) {
$stmt = $this->getDBH()->stmt_init();
$query = "SELECT * ";
$query .= "FROM {$record} ";
$query .= "WHERE {$param} = {$value} LIMIT 1";
if($stmt->prepare($query)){
return $this->execute_simpleAssoc($stmt);
} else {
return "Prepare failed: (" . $this->getDBH()->errno . ") " . $this->getDBH()->error;
}
}
使用这样的查询仍然安全吗?还是我一定需要使用 bind_param 方法?
希望我没有混淆,谢谢您的任何建议。