FC2ブログ

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
と表示されました
スポンサーサイト



テーマ : プログラミング
ジャンル : コンピュータ

コメント

非公開コメント

最新記事
検索フォーム
GREEハコニワ攻略サイト
リンク
カテゴリ
月別アーカイブ
フリーエリア
最新記事
FXプライムレート
最新コメント
最新トラックバック