これは私の最初の投稿であり、プログラミングの世界にも比較的慣れていません。簡単に言うと、php、mysql、および javascript/jquery を使用して開発した e コマース サイトを完成させているときに、すべてのクエリを (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 メソッドを使用する必要がありますか?
混乱していないことを願って、アドバイスをありがとう。