我有调试模式并获取此
mySQL字符串:
SELECT "dmd_key","id"
FROM "keys"
WHERE "dmd_key" = '140ec37b981042c8549b07d6d4589295'
AND "website" = 'test.de'
但那根弦不适合我。我收到数据库错误消息。 (标准信息..)
如果我将我的字符串更改为:
SELECT `id`,`dmd_key`
FROM `keys`
WHERE `dmd_key` = '140ec37b981042c8549b07d6d4589295'
AND `website` = 'test.de'
我得到了结果。 我想我必须在我的设置中改变一些东西,但我不知道是什么。
这是我第一次使用medoo,我觉得medoo并不爱我...
感谢您的帮助。
答案 0 :(得分:1)
这似乎是Medoo中的一个问题。您不是唯一一个看到此问题的人(1,2)。根据{{3}},Medoo创建了mySQL代码,用双引号转义表名,然后更改mySQL选项以满足它:
case 'mysql':
// Make MySQL using standard quoted identifier
$commands[] = 'SET SQL_MODE=ANSI_QUOTES';
您的网络主机上似乎禁用了此选项,导致您的环境无法使用Medoo。
很难说出这是多么疯狂。框架应生成与其运行的数据库兼容的SQL。我会切换到另一个框架。
答案 1 :(得分:0)
SET SQL_MODE=ANSI_QUOTES
将变为无效。
或者您可以转到medoo.php并更新函数以使用反引号,如下所示:
protected function table_quote($table)
{
return '`' . $this->prefix . $table . '`';
}
protected function column_quote($string)
{
preg_match('/(\(JSON\)\s*|^#)?([a-zA-Z0-9_]*)\.([a-zA-Z0-9_]*)/', $string, $column_match);
if (isset($column_match[ 2 ], $column_match[ 3 ]))
{
return '`' . $this->prefix . $column_match[ 2 ] . '`.`' . $column_match[ 3 ] . '`';
}
return '`' . $string . '`';
}