我现在遇到了一个非常烦人的问题。我尝试创建一个写入 MySQL 数据库的 CSV 上传。该系统可以工作,但只有当我有 1 行时。当我获得更多行时,会出现错误“列计数与第 1 行的值计数不匹配”。
这是我的 PHP 代码:
DEFINE('DB_HOST', 'localhost'); // Server naam
DEFINE('DB_USERNAME', 'root'); // Gebruikersnaam
DEFINE('DB_PASSWORD', 'root'); // Wachtwoord
DEFINE('DB_DATABASE', 'wp3'); // Database naam
// Initialisatie
$databasetable = "users";
$fieldseparator = ",";
$lineseparator = "\n";
$csvfile = "backups/compleet.csv";
$output = "";
// Database connection
$con = mysqli_connect(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
mysqli_set_charset($con, "utf8");
if (mysqli_connect_errno())
{
die('Service kan niet geladen worden.');
}
// Perform checks with CSV file
if(!file_exists($csvfile))
{
echo "File not found. Make sure you specified the correct path.\n";
exit;
}
$file = fopen($csvfile, "r");
if(!$file)
{
echo "Error opening data file.\n";
exit;
}
$size = filesize($csvfile);
if(!$size)
{
echo "File is empty.\n";
exit;
}
// Get content from CSV file
$csvcontent = fread($file, $size);
fclose($file);
// Initialize CSV file variables
$lines = 0;
$queries = "";
$linearray = array();
// Read each line from CSV file, clean data and put data in database
foreach(explode($lineseparator, $csvcontent) as $line)
{
$lines++;
$line = trim($line, " \t");
$line = str_replace("\r", "", $line);
$line = str_replace("'", "\'", $line);
$linearray = explode($fieldseparator, $line);
$linemysql = implode("','", $linearray);
$query = "INSERT INTO $databasetable VALUES('', '$linemysql')";
// $queries .= $query . "\n";
if (!mysqli_query($con, $query))
{
echo 'Fout: ' . $sql . '<br>' . mysqli_error($con);
}
}
// Read all the rows from the table and print to screen
$sql = "SELECT * FROM $databasetable";
$result = mysqli_query($con, $sql);
$columns_total = mysqli_num_fields($result);
while ($row = mysqli_fetch_array($result))
{
for ($i=0; $i<$columns_total; $i++)
{
$output .= $row["$i"] . ', ';
}
$output .= '<br>';
}
echo "<p>Er zijn $lines regels aan de tabel toegevoegd.</p>";
echo "<p>De database bevat nu de volgende data:<br>$output</p>";
这是我的 csv 文件:
id、用户名、密码、名字、姓氏、权限、图像、拇指、标题
3,Frank,密码,Frank,VanDeursen,作者,frankImg.jpg,frankImg.jpg,tropical.jpg
4、Kevin,密码,Kef,Borgh,作者,kev.jpg,kev.jpg,ocean.jpg
感谢您的帮助!
最佳答案
David, password, david, backname, author, stock.jpg, image.jpg, stock.jpg
Frank, password, frank, backname, admin, stock,jpg, image,jpg, stock,jpg
您的 csv 文件第二行中有更多列,请仔细检查 stock,jpg, image,jpg, stock,jpg
所有列都包含逗号而不是点!
关于php - "Column count doesn' t match value count at row 1”当我尝试上传超过 1 行时出现错误。(CSV 文件到 MySQL 数据库),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33941171/