PDO执行语句超时

时间:2014-12-08 22:06:28

标签: php pdo sqlite

我遇到了一些麻烦,我无法找到问题的根源,但是我无法向我的sqlite3数据库发送一个简单的更新,这个数据库只是超时而且没有做任何事情。它首先说了三十秒,然后我将它改为5分钟,它仍然无法通过一个简单的1行sqlite表进行查询。

  if (isset($_POST['apply']))
    {
    try {
    $bio = $_POST['bio'];
        $file_db = new PDO('sqlite:Secure/data.sqlite');
        // Set errormode to exceptions
        //$file_db->exec("SET CHARACTER SET utf8"); 
        $file_db->setAttribute(PDO::ATTR_ERRMODE, 
                            PDO::ERRMODE_EXCEPTION);
        //
        echo("$bio $name");

        $sql = "UPDATE `users`
        SET `profile` = :bio
        WHERE `name` = :name
        ";
        echo("2");
        $statement = $file_db->prepare($sql);
        echo("3");
         $statement->bindValue(":bio", $bio);
         echo("4");
        $statement->bindValue(":name", $name);
        echo("5");
        $statement->execute();
        echo("6");


          $file_db = null;        // Disconnect
}
catch(PDOException $e) {
  echo $e->getMessage();
}
        //$statement->bindValue(":profile", $profile);
        //$statement->execute();

    }

2 个答案:

答案 0 :(得分:1)

bindValue()来电中删除引号:

$statement = $db->prepare($sql);
$statement->bindValue(':bio', $_POST['bio'], PDO::PARAM_STR);
$statement->bindValue(':name', $_POST['name'], PDO::PARAM_STR);
$statement->execute();

$statement = $db->prepare($sql);
$statement->execute(array(':bio' => $_POST['bio'],':name'=>$_POST['name']));

进行更新时,最好检查它是否确实影响了行

if($statement->execute()){
   echo 'success !';
   if($statement->rowCount()>0){
     echo 'record updated !';
   }else{
     echo 'no record updated !';
   }
}else{
   echo 'failed !';
}

答案 1 :(得分:0)

似乎在template.php中设置了一个名为result的变量,不知道为什么,但我把它设置为null并且一切运行良好......