我有表叫XYZ
ID no no2 no3
1 465 Abc [BLOB - 15B]
2 465 Abc [BLOB - 18B]
3 465 Abc [BLOB - 80B]
4 456 Abc [BLOB - 50B]
我想将多个图像插入" no3"使用PDO
PHP
try {
$connection = new PDO($dsn, $username, $password, $options);
$sql = "INSERT INTO xyz (no, no2, no3) SELECT max(nos),nos2,:tmp from ASD;
for($i=0; $i<=count($data)-1; $i++)
{
$data = $_FILES['image']['tmp_name'];
$statement = $connection->prepare($sql);
$statement->bindParam(':tmp',addslashes(file_get_contents($data[$i])));
}
$statement->execute();
} catch(PDOException $error) {
echo $sql . "<br>" . $error->getMessage();
}
只插入一张图片
答案 0 :(得分:1)
正如其他人提到的那样,你错过了一个结束"
,但它似乎存在于你的实际代码中,因为你所描述的行为与这种语法错误不匹配。
所以,进一步看,你只能在循环之后调用execute
。
你也必须在for循环中反复执行语句。 现在您只需覆盖bind参数中的图像,调用execute一次,从而只将最后一个图像插入数据库中。
实际上,您应该能够为语句准备一次,并且在循环中,对于每次迭代,绑定一个新值并执行该语句。所以循环的代码变成了这样:(假设加载文件等的细节是可以的。我没有调查过。)
$statement = $connection->prepare($sql);
for($i=0; $i<=count($data)-1; $i++)
{
$data = $_FILES['image']['tmp_name'];
$statement->bindParam(':tmp',addslashes(file_get_contents($data[$i])));
$statement->execute();
}
答案 1 :(得分:0)
纠正PHP代码
$statement = $connection->prepare($sql);
$data = $_FILES['image']['tmp_name'];
for($i=0; $i<=count($data)-1; $i++)
{
$tmp = addslashes(file_get_contents($data[$i]));
$statement->bindParam(':tmp',$tmp);
$statement->execute();
}
答案 2 :(得分:-1)
你忘了添加结尾&#34;在查询中:
try {
$connection = new PDO($dsn, $username, $password, $options);
$sql = "INSERT INTO xyz (no, no2, no3) SELECT max(nos),nos2,:tmp from ASD";
for($i=0; $i<=count($data)-1; $i++)
{
$data = $_FILES['image']['tmp_name'];
$statement = $connection->prepare($sql);
$statement->bindParam(':tmp',addslashes(file_get_contents($data[$i])));
}
$statement->execute();
} catch(PDOException $error) {
echo $sql . "<br>" . $error->getMessage();
}