php mysql insert into while 予期せぬ終了
PHP コード
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->$result = mysql_query("SELECT uid , pid , cate
FROM upcm");
while($rows = mysql_fetch_row($result))
{
$arry = explode($sepr,$rows[2],5);
$query = "INSERT INTO upcn(uid,pid,cate1,cate2,cate3,cate4,cate5)
VALUES('$rows[0]','$rows[1]','$arry[0]','$arry[1]','$arry[2]','$arry[3]','$arry[4]')";
$result1 = mysql_query($query);
if(!$result1)
{
echo "fail<br>";
}
}
mysql_fetch_row($result) はクエリの結果を取得し、それらを 1 つずつ処理して、ただし、while ループが実行されるたびに、データが処理される前にプログラムが終了するため、insert into を printf ("**"); に置き換えます。は正しく実行されます。実行されるたびに、プログラムによって挿入される項目の数が変化します。場合によっては多い場合もあれば少ない場合もあります。状況を聞いてもよろしいでしょうか。
- -----解決策--------------------。 。
あなたのような問題の場合、信頼性を高めるには、単一の SQL ステートメントを cli モードで実行する必要があります。 ! !
最悪の場合、これを行う代わりに、最初にデータをエクスポートしてからインポートする必要があります。
select into を参照してください。
------解決策------------------
対処する必要がある問題がいくつかあります。
1. PHP タイムアウト
3. 特殊文字はエスケープされません
4.
アルゴリズムの考慮事項:
複数の VALUE にまとめられた INSERT ステートメントを 1000 回実行するごとに挿入
ページング モードでセグメントごとに挿入
SQL 命令を直接使用して、PHP を変更せずに完了
$sql =<<< SQL
INSERT INTO upcn(uid,pid,cate1,cate2,cate3,cate4,cate5)
SELECT uid , pid
, substring_index(substring_index(cate, '$sepr',1),'$sepr',-1)
、 substring_index(substring_index(cate,'$sepr',2),'$sepr',-1)
、 substring_index(substring_index( cate,'$sepr',3),'$sepr',-1)
、 substring_index(substring_index(cate,'$sepr',4),'$sepr',-1)
, substring_index( substring_index(cate,'$sepr',5),'$sepr',-1)
FROM upcm
SQL;