【发布时间】:2020-07-28 10:49:08
【问题描述】:
我尝试在 PHP 中执行 MySQL 查询(使用 Laravel Eloquent)来插入/更新包含文本 (json) 的表列MySQL 会抛出错误“遇到格式不正确的数值”。
表格列:
ALTER TABLE test ADD COLUMN `indicator` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL;
插入:
INSERT INTO test (`indicator`) VALUES ("{\"legend_label\":\"Received\",\"legend_label_id\":8341,\"table_key\":\"created\"}");
Laravel 代码:
$updateQuery = "UPDATE {$tableInfo->{"Table"}} SET `{$columnName}` = :{$columnName}";
try {
$rowUpdated = DB::connection('mysql')->update($updateQuery, [$columnName => $columnValue]);
if (!is_int($rowUpdated)) {
Log::warning("Failed updating column {$columnName} in {$tableInfo->{"Table"}}");
}
} catch (QueryException $ex) {
Log::error("ERROR when executing query");
Log::error("DB ERROR {$ex->getMessage()}");
Log::error("Data: " .print_r($columnValue, true));
Log::error("Type: " .gettype($columnValue));
}
使用 UPDATE 或 INSERT 无关紧要。两者都抛出相同的异常。 使用 MySQL Workbench 时工作。不适用于 PHP。
请帮忙!
【问题讨论】:
-
..在 PHP 中不起作用.... php 代码在哪里?
-
您是否尝试打印您准备好的 sql 语句?
-
我很确定“遇到格式不正确的数值”是 php 错误,而不是 mysql 错误。
-
准备好的语句看起来不错。
UPDATE test SET `indicator` = :indicator -
你能解释一下这一行吗 - $updateQuery = "UPDATE {$tableInfo->{"Table"}} SET
{$columnName}= :{$columnName}";为什么两者都是 columnName?
标签: php mysql laravel eloquent