dポイントプレゼントキャンペーン実施中!

$arrayCodeは生徒の出席番号を列挙した配列です。
$arrayNameは生徒の名前を列挙した配列です。

それぞれの配列に9個ずつデータが格納されており、出席番号に対応する名前をupdateしたいです。

$arrayCodeや$arrayNameにforeach構文などで9回SQL発行、実行を繰り返すのでしょうが、
どのように記述したらいいでしょうか。foreachの使い方がいまいち理解できておらず・・・。
よろしくお願い致します。

$arrayCode = array(1,2,3,4,5,6,7,8,9);
$arrayName = array("阿藤","伊藤","宇藤","江藤","尾藤","加藤","木藤","工藤","毛藤");


$sql = "update mytable set myName = '$arrayName' where myCode = '$arrayCode' ";
$rst = mysql_query($sql, $con);


if ($rst) {
echo "成功";
} else {
echo "失敗";
}

A 回答 (4件)

if ( count($arrayCode) == count($arrayName) ) {


  for ( $i = 0; $i < count($arrayCode); $i++ ) {
    $sql = "update mytable set myName = " . $arrayName[$i] . " where myCode = " . $arrayCode[$i];
    $rst = mysql_query($sql, $con);
  }
}

テストしてませんがこんな感じはどうでしょうか?
    • good
    • 0
この回答へのお礼

ryoumasanさん、ありがとうございました。
わたしにも理解できる(?)for構文による解法、
目からうろこでした。

まさに、こういうことできないかと頭を悩ませていました。

大変勉強になりました。ありがとうございました。

お礼日時:2009/06/20 21:47

あくまでもforeach文を利用する場合、連想配列にすると良いです。



$data = array( 1=>"阿藤", 2=>"伊藤", 3=>"宇藤", 4=>"江藤", 5=>"尾藤", 6=>"加藤", 7=>"木藤", 8=>"工藤", 9=>"毛藤");

foreach ($data as $key => $value) {
  $sql = "update mytable set myName = " . $value . " where myCode = " . $key;
  $rst = mysql_query($sql, $con);
}
    • good
    • 0
この回答へのお礼

ryoumasanさん。たびたびのご回答ありがとうございました。

#2さんの御礼にも書きましたが、
今回の本番環境の配列には「1=>」などのキーがついているわけでは
ないので、残念ながらご回答の方法は適用できませんでした。

でも、大変参考になりました。ありがとうございました。

お礼日時:2009/06/20 21:50

配列を二つ使うのは整合性がとりにくいのでお勧めできません。


一応2つ例示しておきます。

<?
$arrayCode = array(1,2,3,4,5,6,7,8,9);
$arrayName = array("阿藤","伊藤","宇藤","江藤","尾藤","加藤","木藤","工藤","毛藤");
foreach($arrayName as $key=>$val){
$sql = "update mytable set myName = '{$val}' where myCode = '{$arrayCode[$key]}' ";
//$rst = mysql_query($sql, $con);
print $sql."<br>";
}
?>



<?
$arrayName = array(1=>"阿藤",2=>"伊藤",3=>"宇藤",4=>"江藤",5=>"尾藤",6=>"加藤",7=>"木藤",8=>"工藤",9=>"毛藤");
foreach($arrayName as $key=>$val){
$sql = "update mytable set myName = '{$val}' where myCode = '{$key}' ";
//$rst = mysql_query($sql, $con);
print $sql."<br>";
}
?>
    • good
    • 0
この回答へのお礼

yambejpさん、いつもお世話になります。

前者は、まさにやりたいコトでした。
$key=>$val
という書き方がミソだったのですね。

後者は、配列に「1=>」などのキーがついているわけではないので
今回は適用できないようです。

いずれにせよ、おかげさまで解決しました。ありがとうございました。

お礼日時:2009/06/20 21:45

下記URLを参照してください



参考URL:http://ww7.tiki.ne.jp/~inabah/php/002_011.htm
    • good
    • 0
この回答へのお礼

aleisterさん、早速のご回答ありがとうございました。

foreachの書き方は、ご照会のものなど解説サイトでわかるのですが、
二つの配列変数を同時並行でSQL文に流し込んでいく書き方がわかりませんでした。


$arrayCode = array(1,2,3,4,5,6,7,8,9);
$arrayName = array("阿藤","伊藤","宇藤","江藤","尾藤","加藤","木藤","工藤","毛藤");

以上の2配列変数を、

$sql = "update mytable set myName = '阿藤' where myCode = '1' ";
$rst = mysql_query($sql, $con);

$sql = "update mytable set myName = '伊藤' where myCode = '2' ";
$rst = mysql_query($sql, $con);

$sql = "update mytable set myName = '宇藤' where myCode = '3' ";
$rst = mysql_query($sql, $con);
  :
 (以下略)
  :

…という風に順次実行していくのに、例えば次のようにすれば、$arrayCodeの方は
SQL文に順次流し込んでいけますが、$arrayNameの方は流し込んでいけませんよね?


foreach ($arrayCode as $value) {
$sql = "update mytable set myName = '$arrayName' where myCode = '$value' ";
$rst = mysql_query($sql, $con);
}

お礼日時:2009/06/18 17:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!