• ベストアンサー

配列の初歩2

めとろいと(@naktak)の回答

回答No.3

numberという定数はPHPのどこで定義されているのでしょう? 定義されていないならそういった結果になるのは当然です。 $bat内には、連想配列である$bat["number"]も存在しませんし、 numberが定数であったとしたらnumberの定数定義が存在しません。 numberがテーブル項目名を指すならば、DBとPHPを切り分けて考えましょう。 PHPの構文内でDBの項目名などは利用出来ません。 numberに設定したい値(ここで5)を変数などで使いまわせば可能です。 $bat=array(5=>6,6=>7,7=>8); $num = 5; $sql = "insert into t1 values('" . $num . "','" . $bat[$num] . "')";

Scipio93
質問者

補足

すみません 最初のテーブル部分を略していました 以下が正しいものです t1 +-+-+ |number|number2| +-+-+ |1|2| +-+-+ |3|4| 何卒よろしくお願いします。

関連するQ&A

  • 配列の初歩

    初めてのプログラミングのため、初歩的な質問で申し訳ございません。 PHP+MYSQLに挑戦していますが、 複数の値を配列(これがわかりません)を使って、レコードを増やすやり方がわかりません。 $area = 5; $area2 = 6; $sql = "insert into t1 (number,number2) values ('.$area.','.$area2.')"; $res = mysql_db_query($db,$sql); なら、レコードを増やすことができましたが、これを配列(5,6)を使ってやるにはどうしたらよいのでしょうか。何卒よろしくお願いします。

    • ベストアンサー
    • PHP
  • 配列データのMySQLへの登録

    下記の配列のデータをMySQLのデータベースに登録をしたいと思っています。 (参考)に記述しています内容で実行をしましたが、1つ目のデータしか登録がされず、 for文なども考え試行錯誤していましたが、うまく実行できない状況であります。 登録のための方法をご教授いただければと思います。よろしくお願いします。 array(3) { [0]=>"146-0082" [1]=>"東京都大田区" [2]=>"田中さん" array(3) { [0]=>"120-0015" [1]=>"東京都足立区" [2]=>"山田さん" -------------------- (参考) $sql = ('insert into table (number, adress, name) values (:number, :adress, :name)'); $stmt = $dbh->prepare($sql); $params = array( ":number" => $data[0], ":adress" => $data[1], ":name" => $data[2] );

    • ベストアンサー
    • PHP
  • 複雑なクエリ

    最近の連続失敗回数が3回の登録番号を求めるクエリがわかりません。 教えてください。 DBは、MySQL version: 4.0.22で、副問合せ等は使用できません。 create table t_test( n_no integer,-- 登録番号 n_flg integer,-- 0:成功1:失敗 d_update date-- 更新日付 ); insert into t_test (n_no, n_flg, d_update)values (1,0,'2007-06-01'); insert into t_test (n_no, n_flg, d_update)values (1,0,'2007-06-02'); insert into t_test (n_no, n_flg, d_update)values (1,0,'2007-06-03'); insert into t_test (n_no, n_flg, d_update)values (1,1,'2007-06-04'); insert into t_test (n_no, n_flg, d_update)values (1,1,'2007-06-05'); insert into t_test (n_no, n_flg, d_update)values (2,0,'2007-06-01'); insert into t_test (n_no, n_flg, d_update)values (2,0,'2007-06-02'); insert into t_test (n_no, n_flg, d_update)values (2,1,'2007-06-03'); insert into t_test (n_no, n_flg, d_update)values (2,1,'2007-06-04'); insert into t_test (n_no, n_flg, d_update)values (2,1,'2007-06-05'); insert into t_test (n_no, n_flg, d_update)values (3,0,'2007-06-03'); insert into t_test (n_no, n_flg, d_update)values (3,1,'2007-06-04'); insert into t_test (n_no, n_flg, d_update)values (3,1,'2007-06-05'); insert into t_test (n_no, n_flg, d_update)values (3,1,'2007-06-06'); insert into t_test (n_no, n_flg, d_update)values (3,0,'2007-06-07');

    • ベストアンサー
    • MySQL
  • PHP+mySQLでのCSV→DB登録で文字化けします

    現在タブ区切りのCSVファイルをPHPで取り込み mySQLへINSERTするものを作ろうとしているのですが INSERTするモノに全角が入ると文字化けているせいか mysql_queryでFALSEが帰ってきてしまいます。 使用環境、コードを以下に書きます。 どこかおかしな点等ありましたらご教授お願い致します。 OS:windowsXP PHP:Ver5.2.6、default_charset UTF-8 mysql:Ver5.0.51a UTF-8 取り込みたいCSV:Shift_JIS,CRLF,タブ区切り コード(一部) while(!feof($fp)){ $buf = fgets($fp); $buf = mb_convert_encoding($buf, "UTF-8", "Shift_JIS"); $buf=str_replace('\r\n', '\n', $buf); $array = preg_split("/\t/", $buf); if($array[0] == "") { break; } else { //INSERT用に加工( $values = replaceValues($array); } $sql = "INSERT INTO table_name VALUES($values)"; $res = mysql_query($sql); if(!$res){ echo "登録に失敗しました。"; echo "sql:".$sql; mysql_close($conn); exit; } $cnt++; }

    • 締切済み
    • PHP
  • 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初心者ですが、ここ一ヵ月ほど悩みに悩んだのですが、答えがわかりませんので教えてください。初歩的なことだとは思うのですが、配列データのレコード登録方法がわかりません。 例えば、$a = array("あ","い","う","え","お"); とした場合に$aをレコードに追加するにはどうすればいいんでしょうか? そのまま、$sql = "INSERT INTO (`test`) VALUES ('{$a}')"; とやってもarrayとなってしまいます。やりたいのは個別レコードにしての登録です。 1,あ 2.い 3.う …というような。 どうか宜しくお願い致します。

    • 締切済み
    • PHP
  • トランザクションについて教えてください

    PHPとMysqlを利用しています。MySQL4.1.18です。 同じテーブルに2つ以上の値をINSERTする場合、 1つでもエラーがあればロールバックさせるということはできますでしょうか。 あらかじめ「id=1」の値を登録しておき、この場合1つめがエラーになるので 2つめも実行されないでほしいのですが、実行されてしまいます。 テーブルのタイプはInnoDBにしています。 どうぞよろしくお願いします。 以下を参考に作成しました。 http://oshiete.nikkeibp.co.jp/qa3065237.html $sql = "begin"; $rst = mysql_query($sql, $con); //1つめ $sql= "INSERT INTO T_test(id,name)values('1','山田')"; $rst = mysql_query($sql, $con); if(!$rst){$err="err";} //2つめ $sql= "INSERT INTO T_test(id,name)values('2','鈴木')"; $rst = mysql_query($sql, $con); if(!$rst){$err="err";} $sql = "commit"; $rst = mysql_query($sql, $con); if($err){ $sql = "rollback"; $rst = mysql_query($sql, $con); }

    • ベストアンサー
    • MySQL
  • トランザクションについて

    トランザクションについての質問なのですが、下にある1のSQLを実行すると 'a'だけ登録されるのは、分かるのですが、 2のSQLを実行すると、'c'と'd'の両方が登録されてしまいます。 私的には、両方登録されないのかなぁと思っていたのですが・・・ COMMITが来た時点で、START TRANSACTIONの開始位置は、 あまり関係ないということなのでしょうか? よろしくお願いします。 1. START TRANSACTION; insert into test values('a'); START TRANSACTION; insert into mtuser values('b'); ROLLBACK; COMMIT; 2. START TRANSACTION; insert into test values('c'); START TRANSACTION; insert into mtuser values('d'); COMMIT; ROLLBACK; 環境:Mysql4.1.19

    • ベストアンサー
    • MySQL
  • 別テーブルからselectした値を他のテーブルにinsertしたいのですが、上手くできません

    以下のように行ったのですが、 全ての値が別テーブルにinsertされません。 $sql = "SELECT tbl_A.id, tbl_A.data FROM tbl_A "; $rst = mysql_query( $sql ); while ( $col = mysql_fetch_array( $rst ) ) { $sql = "INSERT INTO tbl_B (          date, id, data ) VALUES ( '" . date( 'Y-m-d' ) . "', '" . mysql_real_escape_string( $col['id'] ) . "', '" . mysql_real_escape_string( $col['data'] ) . "' )"; } このやり方では、テーブル内の1つの値しかinsertされません。 selectされた全ての値をinsertするにはどのようにしたら良いのでしょうか? よろしくお願いします。 DB:mysql5 SP:php5

    • ベストアンサー
    • MySQL
  • 配列をmysqlに保存

    チェックボックスで複数選択されたチェックボックスの値を配列としてmysqlに保存したいのですがどうも上手くいきません。いろいろweb上で探してみましたが、serialize/unserialize関数?を使うのでしょうか?ちなみに抽出も上手くいきません。どなたか教えていただけませんか?宜しくお願いします。以下スクリプトの一部です。 //配列 <input type='checkbox' name='op[]' value='ac'>ac <input type='checkbox' name='op[]' value='pw'>pw <input type='checkbox' name='op[]' value='cd'>cd //データベースに登録 $sql="insert into test (test) values (\"$op\")"; mysql_query($sql,$con); //データベースから配列として抽出 $sql = "select * from op"; $rst = mysql_query($sql,$con); $col = mysql_fetch_array($rst); $op = $col[op];

    • ベストアンサー
    • PHP