PHPからデータベースのレコードを更新、削除

PHPからデータベースのレコードを更新、削除
#05 データの更新・削除をしてみよう
http://dotinstall.com/lessons/basic_php_advanced/6905
を参考に
データベースのレコードを更新、削除
影響を受けたレコードの数の表示を学習
PODでデバッグするときには
エラーメッセージを表示させる
var_dump($stmt->errorInfo());
が便利
今回は、更新と削除ということで
名前が n から始まる人のメルアドを
dummy
に変えてみる
これには
prepare()
内部で SQL を発行し実行すればいい
実行するのは
更新に使う update
そして where とlike をつかう
これに関しては
#10 条件付きで抽出してみよう (1)
http://dotinstall.com/lessons/basic_mysql_v2/7410
を参考にするとわかりやすい
通常、where をつかうけど
文字列で あいまいな検索をするなら
like をつかう
今回、発行するSQLは
update users set email = :email where name like :name”
この意味は
users テーブルの email を :email に変更する
変更場所は where で指定している
name が :name になっている場所
という意味
:email
:name
はプレースホルダーの ?.?の代わりなので
execute() の中で
array() で指定する
また、mysql で ~から始まるというようなときには
%をつける
今回のように
nから始まるというなら
n%
となる
なので、
execute(array(“:email”=>”dummy”,”:name”=>”n%”))
というようにする
これで、mysql -u root -p
でログインして
select * from users;
で確認すると
email カラムの内容が
dummy に変更されているのが確認できる
次に、削除について
今回はパスワードがp10 のものを削除する
削除するためのSQLは
delete を使う
削除も prepare() を使って実行する
発行するSQLは
delete from users where password =:password
これで、users テーブルの password が
:password になっているものを削除する
:password は ?のプレースホルダーの代わりなので
これも
execute() の中に array() で指定する
今回は p10 の部分を削除したいので
execute(array(“:password”=>”p10″))
これだけでも消すことはできるけど
何件削除したか表示したほうがわかりやすいので
rowCount() を使うことで、
何件削除されたかを知ることができる
これを echo で表示すればOK
echo $stmt->rowCount() .”records deleted”;
というように
PHP では . でjavascript の+のように文字列連結を
. で行えるので、
分かりやすい文章を表示できる
私の場合だと10件有ったので
10 records deleted
と表示されました

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です