php - 我的 INSERT 准备好的语句正在使用 PHP PDO 制作多条记录
问题描述
我正在尝试用文本文件中的数据填充 mysql 表。这是代码:
try
{
$conn = new PDO("mysql:server=localhost;dbname=pure","root");
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$que=$conn->prepare("INSERT INTO posts (title,actress,body,image,date,slug) VALUES (?,?,?,?,?,?)");
}
catch(PDOException $e)
{
echo "Error!";
}
$titles=fopen("titles.txt","r");
$names=fopen("names.txt","r");
$dates=fopen("dates.txt","r");
for($i=0;$i<382;$i++)
{
$title=fgets($titles);
$name=fgets($names);
$body="<h3 style='text-align:center'>$title</h3>something $name something.<br>Video link<br>Info:";
$src="images/".str_replace(' ','_',$title).".jpg";
$date=fgets($dates);
$slug=str_replace(' ','-',$title);
$que->execute([$title,$name,$body,$src,$date,$slug]);
echo "$i done!<br>";
}
fclose($titles);
fclose($names);
fclose($dates);
echo "DONE!";
?>
首先,我只测试了 10 - 20 条记录,而且效果很好。但是当我为所有 382 条记录执行脚本时,最后,我得到了 764 条记录... $i 只回显了 382 次(应该如此),所以我不知道为什么会发生 $que->execute() 764 次。此外,奇怪的是,我得到了 2 倍的记录,但并非所有来自文本文件的记录都进入数据库。有的插了2、3次,有的没了。有人知道发生了什么吗?
解决方案
我建议你先声明bindParam()
,然后再execute()
声明。它可能会修复错误,但我不确定。
编辑:如果您使用的是 PDO,那么您可以这样使用bindParam()
:
$que->bindParam(...);
推荐阅读
- c# - .net core api项目控制器中的SQL连接
- css - 如何在没有后透明部分的情况下将背景颜色覆盖到背景图像
- redirect - 如何让'_redirects'被识别netlify
- java - JAVA - 来自扫描仪的用户输入 java.util.NoSuchElementException
- r - 如何在 R 中生成一个运行 R 脚本的长时间运行的并行进程?
- vb.net - Access 数据库错误“找不到文件”
- sql - 如何在 postgresql 查询中将行转换为列
- vba - 我无法让我的 Ms Access Form 将信息保存回表格
- sql - 如何使一列依赖于同一表中的另一列
- c - 使用指针复制字符会导致分段错误