Excel に mysql をインポートするとデータが失われる
昨夜一晩かけて解決できませんでした。助けを求めにここに来ました。皆さんありがとう
for($j=3;$j<=$highestRow;$j++)//表头不读取<br />
{<br />
$a = $objPHPExcel->getActiveSheet()->getCell("A".$j)->getValue();<br />
$a=iconv("UTF-8","GBK//IGNORE",$a);//转码<br />
$b = $objPHPExcel->getActiveSheet()->getCell("B".$j)->getValue();<br />
$b=iconv("UTF-8","GBK//IGNORE",$b);//转码<br />
//$c = $objPHPExcel->getActiveSheet()->getCell("C".$j)->getValue();<br />
//$d = $objPHPExcel->getActiveSheet()->getCell("D".$j)->getValue();<br />
//$e = $objPHPExcel->getActiveSheet()->getCell("E".$j)->getValue();<br />
$sql = "INSERT INTO paee_course VALUES('".$a."','".$b."')";//,".$c.",".$d.",".$e."<br />
echo $sql."$j</br>";<br />
mysql_query($sql);<br />
/*if(!mysql_query($sql))<br />
{<br />
re_result("导入数据失败,请稍后再试或与管理员联系");<br />
}*/<br />
}
ログイン後にコピー
質問:
1. ページ上の出力はすべて正常に出力されましたが、データベースにインポートするときにインポートされた項目は 67 個だけでした。ご協力ください
。
2. 昨夜、ページ出力が文字化けし、インポートされたデータベースも文字化けしました。エンコーディングを変換した後、ページ出力は正常になりましたが、データベースをインポートした後も、朝インポートしたときは文字化けしていました。 , コードを変更していないことがわかりました。原因は何ですか?
皆さん、ありがとうございます
------解決策---------1. コード化けの問題
PHPExcel はデフォルトで utf-8 エンコーディングでデータを読み取ります。特別な必要がない限り変更しないでください
mysql が gbk 文字セットに設定されている場合、読み取り後に手動でトランスコードする必要はありません。データベースに接続した後、set names utf8 を実行するだけです。 mysql はトランスコーディング作業を自動的に完了します
コードを減らすと、問題が発生する可能性も減ります
2. データ損失の問題
堅牢なコード、つまりエラー処理を含むコードを作成します。少なくともこれは必要です
mysql_query($sql) または die(mysql_error());
これで何が問題だったのかがわかります
データを読み込んだ後、何も処理せずにデータベースに挿入します
では、データに特殊文字「'」が含まれているとエラーになるのではないか?
------解決策---------テーブル内のデータが多すぎるためです。
主キーを signed long int (int) から unsigned Unsigned int に変更すると、容量が 2 倍になります
2147483647 は 2 の 31 乗 - 1
つまり、符号付き長整数で表現できる最大数
符号なし長整数は、最大 4294967296 を表すことができます
もちろん、主キーには負の数値は含まれません