使用PHP将图像插入到BLOB列MySQL中

时间:2018-06-06 08:00:18

标签: php mysql

我有表叫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();
}

只插入一张图片

3 个答案:

答案 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();
}