查询加入在两个表上失败,错误代码为1064

时间:2012-02-13 03:36:27

标签: php mysql codeigniter xampp

我使用

获取约束记录上的行数
$table1="tab1";
        $table2="tab2";
$query=sprintf("SELECT '%s'.* FROM '%s' JOIN '%s' ON ('%s'.id='%s'.id)",
               $table1,
               $table1,
               $table2,
               $table1,
               $table2);
        $query=$this->db->query($query);
        return $query->num_rows();

我想出了以下错误,我正在使用最新的XAMPP与mysql版本5.1

  

错误号码:1064

     

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   靠近'。* FROM'tab1'JOIN'tab2'ON   ('tab1'.userid ='tab2'.userid)'第1行

     

SELECT'tab1'。* FROM'tab1'JOIN'tab2'ON   ( 'tab1'.userid =' tab2'.userid)

     

文件名:A:\ CodeIgniter_2.1.0 \ system \ database \ DB_driver.php

     

行号:330

更新

$query=sprintf("SELECT `%s`.* FROM `%s` JOIN `%s` ON (`%s`.id=`%s`.id) LIMTI `%d`, `%d`",
                   $table1,
                   $table1,
                   $table2,
                   $table1,
                   $table2,
                   $num1,
                   $num2);

错误是

  

错误号码:1327

     

未声明的变量:5

     

SELECT tab1。* FROM tab1加入tab2 ON   (tab1。userid = tab2。userid)LIMIT 50

     

文件名:A:\ CodeIgniter_2.1.0 \ system \ database \ DB_driver.php

     

行号:330

2 个答案:

答案 0 :(得分:0)

MySQL期望使用反引号引用表和列标识符,而不是单引号:

$query=sprintf("SELECT `%s`.* FROM `%s` JOIN `%s` ON (`%s`.id=`%s`.id)",
           $table1,
           $table1,
           $table2,
           $table1,
           $table2);

答案 1 :(得分:0)

试试这段代码。

$table1="tab1";
        $table2="tab2";
$query=sprintf("SELECT `%s`.* FROM `%s` JOIN `%s` ON (`%s`.id=`%s`.id)",
               $table1,
               $table1,
               $table2,
               $table1,
               $table2);
        $query=$this->db->query($query);
        return $query->num_rows();

我认为您的第二个查询应该是这样的。

$query=sprintf("SELECT `%s`.* FROM `%s` JOIN `%s` ON (`%s`.id=`%s`.id) LIMTI %d, %d",
                   $table1,
                   $table1,
                   $table2,
                   $table1,
                   $table2,
                   $num1,
                   $num2);