我刚开始使用 PDO 方法并设法创建一个表并从 .csv 文件中插入 10 条测试记录。我检查了 phpMyAdmin 中的表格,并注意到包含语音标记的字段(在 csv 文件中)完全用双引号括起来,例如“原始 CSV 值”“将”“像这样” - 这是正确的还是我做错了什么?
如果那是正确的,如何在没有额外双引号的情况下正常显示输出?
我希望这是有道理的?我已经阅读了大量与此问题类似的问答,但没有一个人解释了数据库本身应该发生的实际情况,以及随后我如何将数据拉回并在涉及特殊字符时正确显示。我可以把它拉出来并显示出来——但只有存在额外的引号。帮助!请!
最后到了那里。谢谢您的帮助。你是对的,它是包含转义字符的 CSV 文件,所以它确实可以正常工作,而不是我想要的那样。下面的最终代码,希望它在未来对其他人有所帮助。它从 CSV 数据中删除双引号等,并将它们按原意存储在表中:-)
<?php
require_once ('mysql_connect.php');
$databaseFile = fopen('products.csv', 'r');
if ($databaseFile === false) {
die('Could not open the CSV file!');
}
fgetcsv($databaseFile, 0, "|"); // Removes the CSV header line
$stmt = $dbConnection->prepare('INSERT INTO products (id,category,title,price,shipping,live,height,width,depth) VALUES (NULL, ?, ?, ?, ?, ?, ?, ?, ?)');
while (($csvRow = fgetcsv($databaseFile, 500, "|")) !== FALSE) {
$stmt->bindValue(1, $csvRow[0]);
$stmt->bindValue(2, $csvRow[1]);
$stmt->bindValue(3, $csvRow[2]);
$stmt->bindValue(4, $csvRow[3]);
$stmt->bindValue(5, $csvRow[4]);
$stmt->bindValue(6, $csvRow[5]);
$stmt->bindValue(7, $csvRow[6]);
$stmt->bindValue(8, $csvRow[7]);
$stmt->execute();
}
fclose($databaseFile);
$dbConnection = null;
?>