无法在序列化数组上使用PDO :: PARAM_LOB更新MySQL。不会引发错误

时间:2016-06-20 17:31:48

标签: php mysql pdo

我正在运行测试以使用PHP序列化数组,为了更新我的数据库我使用PDO扩展。我尝试过更改代码,但try块没有错误。我有其他功能,我成功​​更新了其他表,这里唯一的不同之处是PDO :: PARAM_LOB行。非常感谢任何帮助。

<?php
require("database.php");

try {
    $test = array('15525');
    array_push($test, '12345');
    var_dump($test);
    $stest = serialize($test);
    var_dump($stest) ;
    $dapartmentToUpdate = 3;
    $result = $db->prepare("
        UPDATE departments_employees 
        SET employee_id = ?  
        WHERE department_id = ?
        ");
    $result ->bindParam(1,$stest,PDO::PARAM_LOB);
    $result ->bindParam(2,$departmentToUpdate,PDO::PARAM_INT);
    $result -> execute();


    } catch (Exception $e) {

        echo "Could not write to database for some odd reason";
    exit;
    }

?>

我必须补充一点,通过直接将查询带到SQL使它运行得很好,所以我必须遗漏一些东西。关于SQL的语句看起来像

  UPDATE departments_employees 
  SET employee_id = 'a:2:{i:0;s:5:"15525";i:1;s:5:"12345";}' 
  WHERE department_id = 3

config.php只是一些环境常量,用户,密码和其他一些私有东西,database.php看起来像这样:

<?php
require_once ('config.php');

try {
    $db = new PDO("mysql:host=" . DB_HOST . ";dbname=" . DB_NAME .";port=" . DB_PORT,DB_USER,DB_PASS);
    $db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
    $db->exec("SET NAMES 'utf8'");
} catch (Exception $e) {
    echo "Could not connect to the database.";
    exit;
}

0 个答案:

没有答案