質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
mysqli

MySQLiはPHP5より導入されているデータベース用のドライバです。MySQL 4.1.3以降の新しい機能の利点をまとめています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

3472閲覧

mysqli insert 手続き型 データが登録されない

coko1

総合スコア276

mysqli

MySQLiはPHP5より導入されているデータベース用のドライバです。MySQL 4.1.3以降の新しい機能の利点をまとめています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2017/02/17 12:01

mysqliを使用してinsertを行なおうとしているのですが、最後のreturn true;まで処理が流れているのですが、DBにデータが追加されません。insert-の処理で不足している部分があれば教えていただけないでしょうか?
それと、insertを行ったデータの件数も取得したいのですが、現状nullが格納されて処理を終えてしまいます。insertの結果の件数を取得する方法も加えて教えてくれると助かります。

php

1function insert($sql, $params, &$count=0){ 2 $mysqli = get_connection(); 3 if(is_null($mysqli)){ 4 return false; 5 } 6 if(!is_array($params))$params = array(); 7 8 if(count($params)>0){ 9 //パラメータが1つ以上存在する場合 10 $stmt = mysqli_stmt_init($mysqli); 11 if(!mysqli_stmt_prepare($stmt, $sql)){ 12 //SQLステートメント実行準備失敗 13 return false; 14 } 15 $stmt_params = array($stmt, ''); 16 foreach($params as $idx => $value){ 17 if(is_int($value))$stmt_params[1] .= 'i'; 18 else if(is_float($value))$stmt_params[1] .= 'd'; 19 else if(is_string($value))$stmt_params[1] .= 's'; 20 $stmt_params[] = &$params[$idx]; 21 } 22 call_user_func_array( "mysqli_stmt_bind_param" ,$stmt_params ); 23 if(!mysqli_stmt_execute($stmt)){ 24 //SQLステートメント実行失敗 25 return false; 26 } 27 28 $result = mysqli_stmt_get_result($stmt); 29 }else{ 30 //上記以外の場合 31 $result = mysqli_query($mysqli, $sql, MYSQLI_STORE_RESULT ); 32 } 33 34 //更新件数取得 35 $count = mysqli_affected_rows($result); 36 37 mysqli_free_result($result); 38 mysqli_close($mysqli); 39 40 return true; 41 42}

sql

1insert into USER( 2 create_date 3 ,user_name 4 ,user_password 5)values( 6 now() 7 ,? 8 ,? 9)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

AUTO COMMITが有効になっていないのでは?
COMMITしてみてください。

投稿2017/02/17 12:15

moonphase

総合スコア6621

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

0

ざっくり見てもわからないので、
mysqli_errno()mysqli_error()をmysqli系関数実行直後に加えて
エラーが発生していないか点検してみてはいかがでしょうか。

投稿2017/02/17 12:13

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問