多个 SQL 查询未在 Cakephp 中执行

Posted

技术标签:

【中文标题】多个 SQL 查询未在 Cakephp 中执行【英文标题】:Multiple SQL query not executing in Cakephp 【发布时间】:2012-06-07 01:13:05 【问题描述】:

这是场景,我在其中上传了一个 sql 查询的 txt 文件。并且每次成功上传,我也需要执行它的内容。

好吧,我似乎无法执行一组查询。只需单行查询。

我有 query.txt:

USE `wifi_analyzer`;

CREATE TABLE 'test' (
    'username' varchar(10) NOT NULL,
    'password' varchar(10) NOT NULL
    );

这就是我在我的 cakephp 文件中执行它的方式。

$fullFile = $file_path.$file_name;
$readFile = fopen($file_path.$file_name, 'r');
$contents = fread($readFile,filesize($fullFile));
$this->User->query($contents);

可以读取文件及其内容。但是,它显示一个错误:

SQL Error: 1064: You have an error in your SQL syntax; check the manual that corresponds to your mysql server version for the right syntax to use near 'CREATE TABLE 'test' (
    'username' varchar(10) NOT NULL,
    'password' varchar(10' at line 3 [CORE\cake\libs\model\datasources\dbo_source.php, line 673]

好吧,如果它只是这样的单行查询:

Select * from sometable;

它不显示任何错误。但是这个单一的查询:

CREATE TABLE 'test' (
'username' varchar(10) NOT NULL,
'password' varchar(10) NOT NULL
);

它也不执行。


更新: 好吧,我读过这个: http://www.hardcode.nl/subcategory_4/article_558-execute-mysql-sql-dump-files-via-php-mysqli.htm

但不知道这是否会有所帮助,因为我在 cakephp 中这样做

【问题讨论】:

var_dump($contents) 显示什么? 它显示如下: string(121) "CREATE TABLE 'test' ('username' varchar(10) NOT NULL, 'password' varchar(10) NOT NULL); " 【参考方案1】:

不要在表名和字段名中使用单引号。执行下面的查询它将起作用

CREATE TABLE `test` (
`username` varchar( 10 ) NOT NULL ,
`password` varchar( 10 ) NOT NULL
);

【讨论】:

以上是关于多个 SQL 查询未在 Cakephp 中执行的主要内容,如果未能解决你的问题,请参考以下文章

未在 H2 数据库上执行的 Sql 查询

PreparedStatement 最大查询,参数未在 Java 中执行

cakephp 在执行前查看编译好的 SQL Query

文件未在 cakephp 中使用 Ajax 上传

对 CakePHP 的 SQL 查询 [关闭]

cakephp中sql查询大于