以下のようなものを使用して、テーブルの最初の列を新しい値で更新しようとしています..問題は、mysql で $userTemp 変数が増加していないことですが、 php forループ内の配列(予想どおり)。しかし、mysql_query では、これは反映されていないようですか? mysql_query の前に $userTemp をエコーすると、正しくインクリメントされていることが示されるため、その理由がよくわかりません。クエリは関数 queryMysqlPopulate($userTemp,$row[0]); を通じて実行されます。しかし、引数は関数に渡されないようです。ただし、関数呼び出しの後、 $userTemp に対して別のエコーを実行すると、値が実際に増加したことが示されます。まじめにね?!誰かが理由を教えてください。セッション制御はこれと関係がありますか?
どんな助けでも大歓迎です!
PS。これは完全なプログラムではありません。時間がかかりすぎないように、該当する部分を切り取っただけです (役に立てば幸いです)。
$userlogins = array('c001','d001','dj001','ed001',
'k001','nr001','ol001','pt001',
'py001','rx001','s005');
if (tableExists('mytable'))
{
$tempQuery = queryMysql("SELECT username FROM students");
$numRows = mysql_num_rows($tempQuery);
for ($j = 0 ; $j < $numRows ; ++$j)
{
$userTemp = "$userlogins[$j]";
echo $userTemp;
$row = mysql_fetch_row($tempQuery);
queryMysqlPopulate($userTemp,$row[0]);
echo $userTemp;
}
}
と関数
function queryMysqlPopulate($tempLogin, $tempRow){
$result = mysql_query("UPDATE mytable SET username='$tempLogin' WHERE username='$tempRow'") or die(mysql_error());
return $result;}
私は自分の質問に答えることができません。なぜなら私は初心者だからです :P だから代わりに編集してください:
これは問題なく動作しますが、正確には配列アクセスではないため、私が探していたものではありませんが、その値でフィールドを明示的に参照しています:(
for($i = 0; $i < $loops; ++$i)
{
queryMysql("INSERT INTO $name VALUES" .
"('hi$i', 'there', 'all', 'you', 'cats')");
}
次に update ...set を変更します
if (tableExists('mytable'))
{
$tempQuery = queryMysql("SELECT username FROM mytable");
$numRows = mysql_num_rows($tempQuery);
for ($j = 0 ; $j < $numRows ; ++$j)
{
$userTemp = "$userlogins[$j]";
echo $userTemp;
$row = mysql_fetch_row($tempQuery);
queryMysqlPopulate($userTemp,'hi'.$j);
echo $userTemp;
//echo $row[0];
}
//echo tableExists('none');
}
私はまだ配列アクセスによってこれを行うことを好みます。つまり、update ... set mysql クエリの要素番号で最初の列の最初のフィールドにアクセスします。そのため、それに関する助けは大歓迎です。