bindParam
またはbindValue
メソッドを使用して、ステートメントの準備に役立てることができます。$check->execute(array(':name' => $name));
特に複数の値/変数をバインドしている場合は、実行する代わりに一目で物事がより明確になります。
以下の明確で読みやすい例を確認してください。
$q = $db->prepare("SELECT id FROM table WHERE forename = :forename and surname = :surname LIMIT 1");
$q->bindValue(':forename', 'Joe');
$q->bindValue(':surname', 'Bloggs');
$q->execute();
if ($q->rowCount() > 0){
$check = $q->fetch(PDO::FETCH_ASSOC);
$row_id = $check['id'];
}
複数の行が予想される場合は、LIMIT 1
を削除し、フェッチメソッドをfetchAll
次のように変更します。
$q = $db->prepare("SELECT id FROM table WHERE forename = :forename and surname = :surname");
$q->bindValue(':forename', 'Joe');
$q->bindValue(':surname', 'Bloggs');
$q->execute();
if ($q->rowCount() > 0){
$check = $q->fetchAll(PDO::FETCH_ASSOC);
$row_id = $check[1]['id'];
}