【发布时间】:2021-03-13 10:07:18
【问题描述】:
尝试在带有位字段的表中执行插入,但结果所有字段默认填充为 1。不明白我的错误在哪里,或者这是 PDO 中的特定错误。
预查询示例:
INSERT INTO TABLE (is_hidden, is_on_net, is_off_net, is_international)
VALUES (:is_hidden, :is_on_net, :is_off_net, :is_international)
[is_hidden] => 0
[is_on_net] => 1
[is_off_net] => 0
[is_international] => 0
$this->db->preparedQuery($query, $data);
public function preparedQuery($query, $params)
{
try
{
$this->checkConnection();
$stmt = $this->pdo->prepare($query);
if (!$stmt->execute($params))
{
$this->utility->loggerAll($this->logPrefix, __FUNCTION__, $this->logLevel, 1, 'Failed to execute prepared query! ' . $this->pdo->errorInfo()[2] . ', query: ' . $query . ', params: ' . json_encode($params));
return false;
}
}
catch (PDOException $e)
{
$this->utility->loggerAll($this->logPrefix, __FUNCTION__, $this->logLevel, 1, 'Failed to execute prepared query! ' . $e->getMessage() . ', query: ' . $query . ', params: ' . json_encode($params));
return false;
}
return $stmt;
}
【问题讨论】:
-
请使用设置查询和参数的 real PHP 代码编辑您的问题。您刚刚向我们展示了一些伪代码。还有一个
var_dump()的参数,所以我们可以看到它们的值和数据类型。谢谢。 -
我从这个主题看到的是 PDO 中的问题,准备查询的位字段,需要更改为 tinyint - stackoverflow.com/questions/10540483/…
-
啊,好的。所以你要改成
TINYINT(1)? -
是的,已经改变了。效果很好!