>场景: 我在mariaDB中有一个表。它被称为"页面"。它只有三列和几个用于测试目的的条目。
问题: 我尝试在SQL中创建一个不错的PREPARE语句。我没有让它工作,所以我最终得到了以下"简单"代码。
PREPARE stmt from 'SELECT * FROM `pages`;';
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
它确实执行而没有错误,但它不显示一行。
我在这里错过了什么?
如果你问,为什么我对这么简单的查询使用 prepare 语句:它只是为了查找错误。最终的查询对于变量等将更加复杂。
提前感谢!
PS:可能是 mysql 准备语句的 Select * 的双倍,但没有列出任何内容,但可能没有。
其他信息我在 Sequel Pro 中将代码作为直接 SQL 查询运行。
正确答案
Joakim Danielson的猜测是正确的。
prepare stmt from 'SELECT * FROM `pages`;'; execute stmt;
DEALLOCATE PREPARE stmt;
这在续集专业版中有效。但我完全建议不要使用续集优点命令行。其他错误接连发生。在 mysql CLI 中并非如此。最好使用操作系统的命令行。
我想这与续集专业版有关。如果您首先一起运行prepare
和execute
行,它将起作用并显示一些输出,至少它为我做到了,然后分别运行deallocate
。我也尝试了从命令行,它在那里也工作得很好。