• ベストアンサー

PHPとMySQLについて

データベースにデータを挿入する方法を教えてください。 記入するSQL文以下のとおりです。 $sql =<<<EOS INSERT INTO registration ( MAIL, KEY ) VALUES ( '$email', $dbkey ) EOS; です。 データ挿入の仕方を教えてくれないでしょうか?

  • suiku
  • お礼率46% (35/76)
  • PHP
  • 回答数4
  • ありがとう数1

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

  • ベストアンサー
  • php504
  • ベストアンサー率42% (926/2160)
回答No.1

データベースに接続して $db = mysql_connect("localhost", "user", "password"); SQL分を送るだけです mysql_query($sql, $db);

suiku
質問者

お礼

ありがとうございます

suiku
質問者

補足

dieを付けて 確認すると dieのメッセージが実行されます。 どこがわるいのでしょうか? $link = mysql_connect("localhost", "*********", "************"); mysql_select_db("*********", $link); $email = addslashes($mail); $dbkey= addslashes($key); $sql=<<<EOS INSERT INTO registration( MAIL, KEY ) VALUES( $email, $dbkey ) EOS; mysql_query($sql, $link); mysql_close($link);

その他の回答 (3)

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.4

こんにちは。 とりあえず、print $sql;を行って表示された文字列を 提示してください。 生データは伏字で結構ですので。それ以外は表示されたものをお願いします。 あと、テーブルの仕様もお願いします。 >dieを付けて 確認すると >dieのメッセージが実行されます。 エラー情報も頂ければ回答しやすいです。

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.3

こんにちは。 サーバOSとかわからないのであれですが、 Windowsだとコマンドプロンプトを起動してmysqlに接続します。 そこにprintコマンドで画面に出力したSQL文字列を貼り付けて 実行できるか確認します。 print $sql;をEOSの後に追加 SQLがうまく動かない時等は、とりあえず画面に生成したSQLを 出力してみて正しいSQLになってるか確認します。 (SQLに限らず、画面に出力することで変数の中身を確かめると間違いを探しやすいです) 後は、テーブルの型とか確かめてみてください。 (CHAR系の型なのに''で囲ってなかったりとか)

suiku
質問者

補足

OSはLinuxなのですが。。 企業から借りているサーバなので無理です。

  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.2

まずはmysqlコマンド等を利用してデータベースに接続できるか確認してください。 次に作ったPHPで作られたSQLクエリ($sql)がmysqlコマンド等で実行できるか確認してください。

suiku
質問者

補足

MySQLコマンドということは、サーバでの操作でしょうか? それとも、PHP上のMySQL関数ででしょうか?

関連するQ&A

  • MySQLから取り出したものを3つに分ける

    MySQLに以下のようなSQLを打ちました。 create table table_list( id int, task varchar(255) ); insert into table_list values(1,'ほげほげ1-1'); insert into table_list values(1,'ほげほげ1-2'); insert into table_list values(2,'ほげほげ2-1); insert into table_list values(2,'ほげほげ2-2'); insert into table_list values(3,'ほげほげ3-1'); そして、空のdiv要素が3つあります。 このデータベースからidの数値別に、div要素へtaskの文字列を入れたいのですが、どうすればいいのでしょうか? SQLで「select * from table_list」をやってからtaskを取り出すのか、3回SQLで「select task from table_list where id=1」のようにするのがよろしいんでしょうか?

    • ベストアンサー
    • PHP
  • PHP/MySQL INSERT文について。

    PHP/MySQL INSERT文について。 こんばんは。 PHP・MySQLでデータベースへデータの書き込みを試行錯誤しております。 そこで一つどうしても解決出来ない問題(謎)があるので質問させて頂きます。 簡易的な質問内容としては 全てのカラムに対する値の挿入は可能なのに カラムを指定して値を挿入しようとしたらエラーが出ます。 データベースの設定はテーブル名【TESTtable】 フィールド 種別 NULL 属性/その他 AAA int(6) No UNSIGNED ZEROFILL / auto_increment BBB int(4) Yes CCC int(4) Yes DDD int(4) Yes PHPでのSQL実行文をしてはの記述としては(値は全て可変で数値を代入します。) INSERT INTO TESTtable VALUES (last_insert_id(),50,600,50) とした場合は問題無くテーブルに書き込みされますが カラムを指定して INSERT INTO TESTtable (AAA,BBB,CCC,DDD) VALUES (last_insert_id(),50,600,50) とした場合、書き込みが行われません。 INSERT INTO TESTtable ('AAA','BBB','CCC','DDD') VALUES (last_insert_id(),50,600,50) INSERT INTO TESTtable (AAA,'BBB','CCC','DDD') VALUES (last_insert_id(),50,600,50) INSERT INTO TESTtable ('AAA','BBB','CCC','DDD') VALUES (last_insert_id(),'50','600','50') 等、色々試してみましたが不可能でした。 カラムAAAはauto_incrementにりますので毎回書き込みされますが BBB、CCC、DDDは書き込みが不要の場合もあるので カラム指定の書き込みは必須となるのですが・・・行き詰ってしまいました・・・。 ご教授頂ければ幸いです。 どうぞ、宜しくお願い致します。

    • ベストアンサー
    • MySQL
  • INSERTとWHEREについて

    このようなデータベースがあるのですが、INSERT文を入れるとエラーになってしまいます。 +------+----------+----------------+----------+ | id | name | osusume | review | +------+----------+----------------+----------+ | 1 | エイリアン   | NULL | おもしろい | | 2 | スパイダーマン | NULL | NULL  | +------+----------+----------------+----------+ insert into movie(name,osusume,review) values('名無し',5,'つまらない') where id=2; 当たっているように思えるのですが、どこが間違っているのでしょうか??ご教示、お願いいたします。 ちなみにphpではこのようにデータベースに追記するつもりです。 $sql = <<<EOS insert into movie ( name, osusume, review ) values ( '$name', $osusume, '$review' ) WHERE id=2 EOS;

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

    〇質問の主旨 PHPでMySQLのデータベース(テーブル)から データを表示させようと考えていて、 一度目は表示させることはできました。 しかし同じURLでブラウザをリロードしたところ、 二度目は表示されません。 もう一度データを表示させるためには、 どのあたりをチェックすればよいでしょうか? ご存知の方がいらっしゃいましたら、 ご教示願います。 〇質問の補足 PHPによるコードとMySQLによるクエリ文は次のとおりです。 現在、PHPの「処理1」にある"Success!"は表示させることができますが、 「処理2」は表示させることはできません。 ・コード <?php // データベースの接続 try { $dbh = new PDO('mysql:host=localhost;dbname=mydatabase', 'myname','mypassword'); } catch(PDOException $e) { var_dump($e->getMessage()); exit; } // 処理 1 echo "Success!"; // 処理 2 $sql = "select * from users"; $stmt = $dbh->query($sql); foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $user) { var_dump($user['name']); } echo $dbh->query("select count(*) from users")->fetchColumn() . "records found"; // 切断 $dbh = null; ・クエリ文 create table users ( id int(11) not null auto_increment primary key, name varchar(50), email varchar(255) unique, password char(16) ); insert into users (name,email,password) values ('hoge','hoge@dummy.com','abc'); insert into users (name,email,password) values ('foo','foo@dummy.com','def'); 以上、よろしくお願い申し上げます。

    • ベストアンサー
    • PHP
  • MySQLとJavaでのコードについて。

    JavaBeanを使って、MySQLにデータを追加したいのですが、それがなかなかうまくいかず質問してます。 Statement statement = connection.createStatement(); String sql_str ="INSERT INTO customer VALUES(\"" +name+"','"+email+"','"+password+"\")"; int r=statement.executeUpdate(sql_str); このコードはjavaBeanのなかに入っており、name,email,passwordはjspからjavabeanに送られてきます。多分、VALUESの後のname,emai,passwordを入れるのに”’などの使い方が間違ってると思います。本には載ってなかったので、ウェッブ検索してみよう見真似でやったので、”’の使い方を把握してません。誰か分かる方回答お願いします。 あとこれとは違うmethodにSELECT文を使った時、 String sql_str = "SELECT email, password FROM customer where email='"+email+"'AND password='"+password+"'"; ResultSet rs = stmt.executeQuery(sql_str);とやったときは動きました。最初はこれと同じようにINSERT 文も書いたのですが、動かなかったんですよね。

    • ベストアンサー
    • Java
  • PHP+MySQLによるINSERTについて

    質問させていただきます。 先日からPHPよりSQLテーブルへの値の追加を試しているのですが、なかなかうまくいきません。いろいろなサイトで資料を探しましたが、それでもできませんでした。 //問題個所 $sql = "INSERT INTO whatsnew(date,title,body) VALUES('.$ThisTime.','.$Title.','.$Body.')"; $result = mysql_query($sql); date、title、bodyは(dateも含め)すべてTEXTです。ちなみにエラーが出るのではなく、何事もなかったかのようになりました(直後にif(!$result){print 'INSERT Error!';}を挿入するとINSERT Error!と表示される)。 どうすればいいか教えていただければ幸いです。

    • ベストアンサー
    • MySQL
  • mysqlでテキストフィールドへPHPからデータ

    もともと考え方がおかしいのかも知れませんが PHPでデータをよみます。 mysql ではTEXTフィールドがあります $r=fread($fp, 長さ(可変長)); でこれからです。 Buf4がTEXTフィールド); $sql="insert into $tbn4 ( Buf4 ) values ($r); sql実行。データがはいりません。

    • ベストアンサー
    • PHP
  • データベースに変数の値を挿入

     HTMLのフォームから、getParameterで取得した値(id,name,club)をデータベースに挿入したいのですが、 String sql="insert into test_table values(id,name,club)";  と記述してもその文字列がそのままテーブルに反映されてしまいます。  もちろん、 String sql="insert into test_table values('12','●田○郎','野球部')"; とあらかじめ記述しておけばこのデータがテーブルに挿入されるのですが・・・。  PHPでは確かvalues('{$id}','{$name}','{$club}')のように記述すればできたので戸惑っています。  JAVAでSQL文に変数を含める場合、どのように記述すればいいのでしょうか?

    • ベストアンサー
    • Java
  • php postgres Insert と updateができない

    こんにちは、 現在、php5とpostgresql8でプログラムを行っています。 それで、 $sql = "INSERT INTO t_hoge (name) VALUES('hogesan')"; pg_exec($sql) と、テーブルにデータを入れているんですが、 エラーはでないのに何故かデータがテーブルにインサートできません。 また、アップデートで編集もできません。 しかし、SELECTで既に入力されているデータを読んでprint等で表示させると普通にデータは取れています。 また、telnet等で直接postgresに hoge=> INSERT INTO t_hoge (name) VALUES('hogesan'); と入力するとデータが挿入できます。 なにが問題なんでしょうか。 権限が問題なのでしょうか。 ちなみにテーブル作成するときは CREATE TABLE t_hoge ( name TEXT PRIMARY KEY, info TEXT ); としています。 なにか思い当たる節があれば助言していただきたいのですが。

    • ベストアンサー
    • PHP
  • PHPのforeachでMysqlにINSERT

    PHPのforeach文を使いMysqlにデータをINSERTしたいです。 配列$resultは以下のような連想配列になっています。 Array ( [0] => Array ( [A] => 1 [B] => 2 [C] => 3 [D] => 4 [E] => 5 ) [1] => Array ( [A] => 2 [B] => 4 [C] => 6 [D] => 8 [E] => 10 ) ) 上記の連想配列をforeach()文で以下の処理をします。 foreach ($result as $key => $value) { /** * データベースへの追加(新規追加時だけ実行。コメント忘れずに) */ $sql = $pdo->prepare('INSERT INTO sample(a, b, c, d, e) VALUES(:a, :b, :c, :d, :e)'); $sql->execute(array(':a' => $value[A], ':b' => $value[B], ':c' => $value[C], ':d' => $value[D], ':e' => $value[E])); } その後データベースでselect * from test;とすると1行目のデータしか格納されていません。原因が不明です。 print すると期待する配列要素が表示されますので配列のデータ配置不備ではありません。 アドバイス頂きたくお願い申し上げます。

    • ベストアンサー
    • PHP