Mysql prepare 语句不返回任何内容.没有语法错误.为什么?



>场景: 我在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 中并非如此。最好使用操作系统的命令行。

我想这与续集专业版有关。如果您首先一起运行prepareexecute行,它将起作用并显示一些输出,至少它为我做到了,然后分别运行deallocate。我也尝试了从命令行,它在那里也工作得很好。

最新更新