更新查询实际上没有更新

时间:2014-09-16 00:27:12

标签: php sql json mysqli

我一直试图解决我在MySQLi课程中遇到的问题。它执行更新查询,但它实际上并没有更新。它告诉我一行已经受到影响,但实际上没有任何变化。

这是我执行查询的代码:

class database_model {

private $mysqli = null;

private $hostname = '127.0.0.1';
private $username = 'root';
private $password = 'password';
private $database = 'database';

public function __construct()
{
    $this->mysqli = new mysqli($this->hostname, $this->username, $this->password, $this->database);
    if ($this->mysqli->connect_errno) {
        die('Failed to connect to MySQL: (' . $this->mysqli->connect_errno . ') ' . $this->mysqli->connect_error);
    }
}

public function query($query, $parameters)
{
    $stmt = $this->mysqli->prepare($query);

    if (is_array($parameters)) {            
        call_user_func_array('mysqli_stmt_bind_param', array_merge(array($stmt, str_repeat('s', count($parameters))), $this->makeValuesReferenced($parameters))); 
    } else {
        $stmt->bind_param('s', $parameters);
    }

    $stmt->execute();

    $results = $stmt->get_result();
    $this->mysqli->commit();
    $stmt->close();

    return $results;
}

private function makeValuesReferenced(&$arr)
{
    $refs = array();
    foreach($arr as $key => $value) {
        $refs[$key] = &$arr[$key];
    }

    return $refs;
}
}

为了澄清,makeValuesReferenced和call_user_func_array用于动态地将参数绑定到查询。

我已启用错误报告。

其他一些可能值得注意的事情。从静态函数调用更新查询,但查询函数内的值是正确的。调用查询函数的代码如下所示:

$session_query = 'UPDATE session SET data = ? WHERE session.user = ?';
self::$db->query($session_query, array($json_data,
                                       self::$credential_value));

$json_data example value: {"dialog_choices":[["Companion","Start searching",3,1]]}
value after updating to $json_data: {"dialog_choices":[["Companion","Start searching",3,1]],"data_encounter":{"id":0}}

它保持不变

self::$credential_value corresponds to the right "session.user".

我在这里不知所措,我尝试了许多不同的变化,认为它可能是一个提交或逃避问题,但它似乎都不是。

真诚的, 尼克

0 个答案:

没有答案