php - 如何在 php 中导入 mysql 数据库之前检查 csv 文件中的每一列数据?
问题描述
我的列标题是 id、name、phone。如果我在 id 列中给出名称,则数据未插入,但消息显示为“成功导入”。我想显示“数据未正确定义”之类的消息。如何在导入 mysql 之前验证代码?
我试图检查 if 和 else 条件,但没有得到我需要的实际结果。
$sql = "INSERT IGNORE INTO `all`(`id`, `name`,`phone`) VALUES ('".$getData[0]."','".$getData[1]."','".$getData[2]."')";
$result = mysqli_query($conn, $sql);
if($result)
{
echo "<script type=\"text/javascript\">alert(\"CSV File has been successfully Imported.\");
}</script>";
else {
echo "<script type=\"text/javascript\"> alert(\"Invalid File Format/ Data Please check file is csv and data as per headings.\");
}</script>";
}
我希望警报消息是“不正确的数据”,但会获得“成功导入”。
解决方案
CSV 中的字段顺序可能会有所不同,例如。第 0 列不能总是“id”。
考虑这个 CSV:
name, id, phone
'Alice', 1, 1234
'Bob', 2, 5678
这个代码:
$sql = "INSERT IGNORE INTO `all`(`id`, `name`,`phone`) VALUES (?, ?, ?)";
$stmt = $db->prepare($sql);
$header = null;
while($row = fgetcsv($handle)) {
if ($header == null) {
$header = $row;
continue;
}
$data = array_combine($header, $row);
// $data is now an assoziative array, eg. you can grab "id" by name
$stmt->execute([ $data['id'], $data['name'], $data['phone'] ]);
}
推荐阅读
- sockets - 通过套接字记录数据流
- matrix - 具有未知变量的矩阵的行列式,这里出了什么问题?
- flutter - 如何在颤动中删除appBar和body之间的空间?
- postgresql - PostgreSQL v12.6 中的 PLpgSQL INSERT-RETURNING-INTO 错误?
- javascript - 两种不同类型的对象数组
- wordpress - 基于 2021 年 5 月谷歌算法改进核心网络生命体征
- java - Spring Boot:以编程方式重新启动,包括 VM 和程序参数以及类路径
- javascript - 如何在屏幕之间传递 Firestore 数据 React Native
- javascript - 无法读取 mongodb 中未定义的属性“地图”
- file - flex文件中的过早EOF