- 【PHP】下らねぇ質問はここに書き込みやがれ 3©2ch.net
561 :デフォルトの名無しさん[]:2016/01/25(月) 14:10:14.53 ID:8/faLYqO - 初めまして
くだらない質問で申し訳ないのですが、以下をご教授願います。 【OS名】FreeBSD 9.1-RELEASE-p24 amd64 【PHPのバージョン】PHP 5.4.45 (cgi-fcgi) 【連携ソフトウェア】MySQL,phpmyadminで管理 【質問内容】 以下のコードを実行時にデータが3回INSERTされてしまいます。 また、INSERTされた内容にはpasswordの値がNULLではないが空で入ってしまいます。 INSERTを一回だけにするためにはどこを変更したらいいでしょうか。 また、DBにINSERTされるデータが空になってしまうのはなぜでしょうか。 動作の流れとしては、別のページでPOSTされたデータを読み込んで、 prepareを作りbindしてexecuteするという流れです。 //トランザクション開始 mysqli_query($link,"begin") or die('トランザクション開始に失敗しました'); /*prepared statment の格納*/ $sql = "insert into members(userid, password, name, email) values (?, ?, ?, ?)"; /*プリペアを作る*/ $stmt = mysqli_prepare($link, $sql) or die ('プリペア送信に失敗しました。SQL:' . $sql); echo mysqli_error($link); //パラメータの送信 mysqli_stmt_bind_param($stmt,'ssss', $input_userid, $input_password, $input_name, $input_email) or die ('パラメータ送信に失敗しました。:' . $stmt); echo mysqli_error($link); //sql実行 mysqli_stmt_execute($stmt) or die('クエリ実行に失敗しました'); $result = mysqli_stmt_execute($stmt); mysqli_stmt_close($stmt); } if ($result) { mysqli_query($link, "commit"); mysqli_close($link); } 以上よろしくお願いいたします
|