首页 > 解决方案 > 我的 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次,有的没了。有人知道发生了什么吗?

标签: phpmysqlpdo

解决方案


我建议你先声明bindParam(),然后再execute()声明。它可能会修复错误,但我不确定。

编辑:如果您使用的是 PDO,那么您可以这样使用bindParam()
$que->bindParam(...);


推荐阅读