リテラルquery
呼び出しから準備済みステートメントに移行しようとしています。
クラスに次の機能があります。
public function read ($identifier) {
$stmt = static::$mysqli->prepare('SELECT * FROM `table` WHERE `id` = ?;');
$stmt->bind_param('i', $identifier);
$stmt->execute();
var_dump($stmt->num_rows);
}
phpMyAdmin から、データベースに ID 1 の行があることはわかっていますが、呼び出すread(1);
とnum_rows
0 になります。
ただし、このロジックを使用すると:
public function read ($identifier) {
$result = static::$mysqli->query('SELECT * FROM `table` WHERE `id` = '.(int) $identifier.';');
var_dump($result->num_rows);
}
代わりに1を取得します。