ホームページ >バックエンド開発 >PHPチュートリアル >php mysql insert into 予期せず終了しました

php mysql insert into 予期せず終了しました

WBOY
WBOYオリジナル
2016-06-13 13:09:54791ブラウズ

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;

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。