MySQLで、INSERT文でエラー

このQ&Aのポイント
  • MySQLのINSERT文でエラーが発生しました。
  • スクリプトを実行した際に、返り値が空でした。
  • 問題の原因を特定し、解決する方法を教えてください。
回答を見る
  • ベストアンサー

MySQLで、INSERT文でエラー

下記のスクリプトで、MySQLサーバーのテーブルの中身を見ようとしたら、 返り値が空でした(行数0) ( クエリの実行時間 0.0010 秒 ) と表示されます。 どこが間違ってるのでしょうか。 ////////////////////// // データベース登録 // ////////////////////// $con = mysql_connect("mysql020.******", "*****", "*****"); // リモートのMySQLデータベースサーバーに接続する mysql_select_db("LAA0471050-ideamemo"); // データベースサーバーに存在する(myPHPAdminで作成済みの)データベースを選択する $sql = "SET NAMES utf8"; mysql_query($sql, $con); $sql = "INSERT INTO ideamemo_table (color, title, contents, create) VALUES ('$color', '$title', '$contents', '$create');"; mysql_query($sql, $con); mysql_close($con); ?>

  • MySQL
  • 回答数2
  • ありがとう数9

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

>ちなみに、phpMyAdminのデータがなかったという状態です。 であれば >$sql = "INSERT INTO ideamemo_table (color, title, contents, create) VALUES ('$color', '$title', '$contents', '$create');"; で与えている各変数$color,$title,$contents,$createがきちんと入っていないのかも この直後に以下をして確認してみてください print $sql; また、mysql_query($sql, $con);がエラーを吐いているかもしれないので mysql_query($sql, $con) or die(mysql_error()); でエラーを拾うのも手です。 >mysqli()関数などを用いた方がいいってことですよね? mysql_関数から一番移植性が高いのはmysqli_関数の手続き型です。 ただしあくまでもコンパチな機能なので可能であればPDOなど 現時点で標準的な仕様に切り替えた方がよいとおもいます

beterugius
質問者

お礼

詳しいご回答、どうも有難うございました。

beterugius
質問者

補足

INSER INTO (color.title,contents,create,update) VALUES('$color', '$title', 'contens'. '$create', '$update') の、テーブルのカラム名に、createや、update という、SQLの予約語?というものが エラーだったようです。 おかげ様で、 INSER INTO (color.title,contents,create,update) VALUES('$color', '$title', 'contens'. '$create_date', '$update_date') にしたら、phpMyAdminにデータが入ってきました!^^ どうも御親切にありがとうございました。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>返り値が空でした(行数0) ( クエリの実行時間 0.0010 秒 ) と表示されます。 >どこが間違ってるのでしょうか。 INSERT文は挿入するだけなので戻り値は空だとおもいますが? 挿入したデータがみたいならSELECT文でみてください (それともINSERTしたあとにphpMyAdminで確認したらデータがなかったという意味でしょうか?) ちなみに ・SET NAMES utf8を生で発行することも ・mysql_query()という古い仕組みをつかうことも ・VALUES ('$color', '$title', '$contents', '$create');のようにエスケープせずに  SQLを実行することも 全体的にダメダメな状態です。 なにを参考にされたかわかりませんが、すこし新しめの情報を吸収した方が よいように思います。

beterugius
質問者

お礼

詳しいご回答どうも有難うございました。

beterugius
質問者

補足

mysqli()関数などを用いた方がいいってことですよね? ちなみに、phpMyAdminのデータがなかったという状態です。

関連するQ&A

  • mySQLでINSERT Errorとなります。

    初心者です。よろしくお願いいたします。 データを入れたいのですが、エラーとなってしまいます。 以下でデータベースとテーブルを作成し、 <?php $db_name="tori"; $tbl_name = "hato"; $db = mysql_connect('localhost', 'root', ''); if (!$db) { die('接続できません: ' . mysql_error()); } $sql = 'CREATE DATABASE tori'; if (mysql_query($sql, $db)) { echo "データベースtori の作成に成功しました\n"; } else { echo 'データベースtoriの作成に失敗しました: ' . mysql_error() . "\n";} mysql_select_db($db_name,$db) or die("データベースへの接続エラー"); $query ="create table {$tbl_name} ( id char(8) primary key, date TEXT, sex TEXT, age TEXT )TYPE=MyISAM"; mysql_query($query); $query ="INSERT INTO `houzingpark`.`hatogaya` ( id , date , sex , iro ) VALUES ( '2', 'uu', 'ii', 'po' )"; mysql_close($db); ?> 以下で入れ込みたいのですが、出来ないのです。 <?php $db_name="tori"; $tbl_name = "hato"; $db = mysql_connect('localhost', 'root', ''); if (!$db) { die('接続できません: ' . mysql_error()); } mysql_select_db($db_name,$db) or die("データベースへの接続エラー"); $sql="INSERT INTO hatogaya ( id , date , sex , iro ) VALUES ( 3, 2005-12-3, mesu, cya )"; mysql_query($sql); if(!$result){print 'INSERT Error!';} echo $sql; mysql_close($db); ?> でINSERTしようとするのですが、INSERT Error!と表示されてしまいます。 Adminで見るとデータベースとテーブルは出来ているのですが、どうしてもINSERTできないのです。 もう何時間も悪戦苦闘しております。 どなたかご指導よろしくお願いいたします。

  • ボタンのonclick時における関数コールの仕方

    下記のPHPスクリプトにおいて、updateMemo()関数の中で、テストで、 echo 'in update'; として、関数内に入ったら、文字列表示をするようにしているのですが、 更新ボタンを押しても、updateMemo()関数の中に入ってきません。(in update が表示されません) 関数のコールの仕方が、onclick=の部分でまちがっているのでしょうか? 教えていただきたいです。 <?php ////////////////////////// // メモ内容の閲覧、更新 // ////////////////////////// $sid = (int)$_GET['sid']; var_dump($sid); $con = mysql_connect("*****", "*****", "*****"); // リモートのMySQLデータベースサーバーに接続する mysql_select_db("*****-ideamemo"); // データベースサーバーに存在する(myPHPAdminで作成済みの)データベースを選択する $sql = "SET NAMES utf8;"; mysql_query($sql); $sql = "SELECT * FROM ideamemo_table WHERE sid=$sid;"; $result = mysql_query($sql, $con) or die(mysql_error()); $row = mysql_fetch_row($result); mysql_close($con); //$row[0] = (int)$row[0]; // string⇒int にキャスト echo '<form name="form1" method="POST" action="deleteUpdate.php">'; echo '内容<br>'; echo '<textarea name="textarea" cols="100" rows="30">'.$row[3].'</textarea>'; echo '<br>'; echo '<input type="button" value="更新" onclick="<?php updateMemo('.$sid.');?>">'; //echo '<input type="button" value="更新" onclick="updateMemo();">'; echo '<input type="button" value="削除" onclick="deleteMemo('.$sid.');">'; echo '<input type="button" value="トップページへ" onclick="location.href=\'main.php\'">'; echo '</form>'; var_dump($row[2]); function updateMemo($sid){ //function updateMemo(){ echo 'in update'; // var_dump($sid); // exit; date_default_timezone_set("Japan"); $update = date(Y年m月d日(D)H時i分s秒); $textarea = $_POST['textarea']; var_dump($textarea); var_dump($update); $con = mysql_connect("*****", "*****", "*****"); // リモートのMySQLデータベースサーバーに接続する mysql_select_db("LAA0471050-ideamemo"); // データベースサーバーに存在する(myPHPAdminで作成済みの)データベースを選択する $sql = "SET NAMES utf8;"; mysql_query($sql); $sql = "UPDATE ideamemo_table SET contents = '$textarea', update_date = '$update' WHERE sid=$sid;"; $result = mysql_query($sql, $con); mysql_close($con); // header("Location: main.php"); } function deleteMemo(int $sid){ echo 'in delete'; $con = mysql_connect("*****", "*****", "*****"); // リモートのMySQLデータベースサーバーに接続する mysql_select_db("LAA0471050-ideamemo"); // データベースサーバーに存在する(myPHPAdminで作成済みの)データベースを選択する $sql = "SET NAMES utf8;"; mysql_query($sql); $sql = "DELETE FROM ideamemo_table WHERE sid=$sid;"; $result = mysql_query($sql, $con); mysql_close($con); // header("Location: main.php"); } ?>

    • ベストアンサー
    • PHP
  • PHPからMySQLのデータベースが作成できない

    PHP:4.4.4 MySQL:4.1.21 です。 PHPからデータベースを作りたいのですがうまくいきません。 以下のように記述しています。 $sql = "CREATE DATABASE ".$DBNAME; $rst = mysql_query($sql,$con); $DBNAMEには作りたいデータベースの名前が入っています。また、$conにはIDが入っており接続はできているようです。しかしこの後で$rstをechoするとTRUEでもFALSEでもなく、何も入っていない状態です。 これはどうすればデータベースをcreateできるのでしょうか? 非推奨のようですがmysql_create_dbを使ってたところ画面が真っ白になってしまいました。

    • 締切済み
    • PHP
  • insertがうまくいかない

    PHP5+MYSQLの環境で $sql_str = "INSERT INTO bbs(userid,toukouid,groupid,title,memo) VALUES('$name','$toukouid','$group','$title','$memo')"; mysql_query($sql_str, $con_id); を実行しますが、登録ができません。 mysql_queryの結果がfalseです・・・。 ちなみに変数は全て1が代入しています。 悪いところあれば指摘お願いいたします。 また、他の情報が必要であればもうしつけください。

    • 締切済み
    • PHP
  • PHP/mySQLでインサートができません。

    PHPとmySQLを勉強中の初心者ですが、よろしくお願いします。 PHPで簡単なインサート文を作ってそれをmySQLに保存しようとしているのですが、以下のエラーが出てしまいます。 Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource プログラムは以下の通りです。HOSTNAME,USERNAME,DBPWDは別のところで定義していますが、mysql_connect, mysql_select_dbではエラーにならないので、データベースの選択まではうまく行っていると思うのですが。 $conn = mysql_connect(HOSTNAME, USERNAME, DBPWD); if(!$conn){ die("Logon Failure to mysql Server."); } $db = mysql_select_db(DBNAME, $conn); if(!$db){ die("Cannot access to the DB"); } foreach($csv_ary as $a => $b) { $query = "INSERT INTO TEST field_a VALUES $a"; if (!mysql_query($query, $db)){ echo "更新失敗: SQL=$query<br>"; } } mysql_close($conn); field_aはvarchar(10)でPrimary_key, NOT NULLの設定です。 Foreachで展開した配列の値はちゃんと長さ10の文字列が入っています。 PHP 4.3.11は mySQL 4.0.27です。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • MySQL 文字化けについて(PHP)

    いつもお世話になっております。 PHPを使用してMySQLからデータを出し入れする際に文字化けが発生し原因がわからず、大変困っております。 MySQL 4.1.18(クライアント 4.1.21) MySQL文字セット UTF-8 Unicode (utf8) 様々なHPを検索して、下記のような一文を入れれば大丈夫と思ったのですが、それでも文字化けは改善されませんでした。 mysql_query("SET NAMES ujis"); 上記文はmysql_connectの直後に記述しております。 INSERT文、SELECT文どちらに不備があるのかわかりません。 ご教授お願い致します。 記述プログラム:(INSERT文) /********************************* * MySQL接続 ********************************/ // DB Connect $db = db_connect(); // DB Select select_db($db); // Set Names mysql_query("SET NAMES ujis"); /********************************* * INSERT文 ********************************/ $sql = "insert into T_YOYAKU values ('1','A','1','あいうえお')"; mysql_query($sql) 省略・・・ 記述プログラム:(SELECT文) /********************************* * MySQL接続 ********************************/ // DB Connect $db = db_connect(); // DB Select select_db($db); // Set Names mysql_query("SET NAMES ujis"); /********************************* * INSERT文 ********************************/ $sql = "select * from T_YOYAKU"; if ( $rs = mysql_query($sql) ) {

    • ベストアンサー
    • MySQL
  • MySQL insertができない

    商品名とその値段を挿入しようとおもっているのですが、下記のようなエラーがでて先に進めずにいます。 Query failed: Unknown column 'item' in 'field list' <?php if($contact=mysql_connect("host","admin","root")){ echo "サーバに接続しました。<br>"; } mysql_select_db("watanabe", $contact); $query = 'INSERT INTO list(item,price) VALUES("りんご","100")'; $result = mysql_query($query) or die('Query failed: ' . mysql_error()); if($result){ echo"追加に成功しました。"; }else{ echo"追加に失敗しました。"; } ?> ご回答願えますでしょうか?

    • ベストアンサー
    • PHP
  • WHERE文の中で、MYSQLにINSERTが出来ない。

    メールを指定した時間に送信しようとしています。 手順はMYSQLに送信したい時間とメールの色々を入れて、 CRONで現在時間を調べて、合致したものを送信する。 このような手順で実現しようとしていますが、 最初でつまずいています。 送信先メールアドレスを while で抽出しながら MYSQLへインサートするつもりですが 一度しかインサートしてくれません。 インサートのsqlを[print $sql;]で、表示したものをphpMyAdminで SQL を実行すると キチンと挿入できます。 **3回分まとめてSQL を実行してもうまく挿入できます。 前のページから送ったものは全て[print] で、思い通りの結果が表示します。 どなたか、ご教授お願いいたします。 $sql = "select count(*) as cnt from customer WHERE customerID IN (1,2,3,5,8)"; $rst = mysql_query($sql, $con); $col = mysql_fetch_array($rst); $tcnt = $col["cnt"]; mysql_free_result($rst); print $tcnt."通送信<br />"; $subject ="これはPOSTで送りました"; $honbun ="これはPOSTで送りました"; $from = '送信元メールアドレス'; $jikan = "これはPOSTで送りました"; $sql ="select * from customer WHERE customerID IN (1,2,3,5,8)"; $rst = mysql_query($sql, $con); while($col = mysql_fetch_array($rst)) { $customerID= $col['customerID']; $name = $col['name']; $mail = $col['mail']; i++ $sql = "INSERT INTO mail_queue_timer (timermailID,customerID, jikan ,sender , recipient ,headers, body ) VALUES ($timermailID, $customerID,$jikan , \"$from\" , \"$mail\" ,\"$subject\" , \"$honbun\" ) "; $rst = mysql_query($sql, $con); }

    • ベストアンサー
    • PHP
  • PHPとMySQLで文字化けします

    <?php $con=mysql_connect("localhost","oxwar2","chono3"); $db=mysql_select_db("oxwar2",$con); $query="insert into japan(id,title,price)values(1,'絵本',1000)"; $result=mysql_query($query,$con); if($result){ print "OK"; } ?> として、実行すると上手くいきますが、phpMyadminで見ますと、日本語の部分だけが文字化けしております。 これを直すにはどうしたらよいのでしょうか。 文字コードはUTF8で作りました。色々試しても同じです。 どのようにしたらよいのでしょうか。 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • PHPとMYSQLでデータ登録

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 上記のようにエラーでました。分かる方いらっしゃいましたらよろしくお願いします。 ソースは下の通りです。 <?php $con = mysql_connect("localhost","root","matsushima") or die(mysql_error()); mysql_select_db("koukou") or die(mysql_error()); $sql = "insert into area(name_area) values('".$_POST[name_area]."')";//SQL文の作成 $res = mysql_query($sql) or die(mysql_error());//クエリの実行 mysql_close($con);//切断 ?> <html> <head> <title>登録完了画面(サンプルリスト)</title> <meta name="keywords" content="入力フォーム,確認画面,サンプル"> </head> <body> <p>