Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 向codeignitor中的控制器注入SQL_Php_Mysql_Sql_Codeigniter_Controller - Fatal编程技术网

Php 向codeignitor中的控制器注入SQL

Php 向codeignitor中的控制器注入SQL,php,mysql,sql,codeigniter,controller,Php,Mysql,Sql,Codeigniter,Controller,我试图用DATE_格式的方法注入一个SQL,它给了我解析错误。但是查询在phpmyadmin中工作得很好。下面你可以找到我的代码,这是我的控制器 public function index() { $sql = "SELECT DATE_FORMAT('added_date', "%M") AS Month, SUM(total) FROM tbl_order GROUP BY DATE_FORMAT('added_date', "%M")"; $query = $this->db

我试图用DATE_格式的方法注入一个SQL,它给了我解析错误。但是查询在phpmyadmin中工作得很好。下面你可以找到我的代码,这是我的控制器

public function index() {
  $sql = "SELECT DATE_FORMAT('added_date', "%M") AS Month, SUM(total) FROM tbl_order GROUP BY DATE_FORMAT('added_date', "%M")";
  $query = $this->db->query($sql);
  $orderData= $query->result_array();
  $data["orderData"] = $orderData;
  var_dump($data);die;
  $this->load->view('admindashboard/index.php',$data);
}

我也附上了错误消息

我认为您可以尝试使用
'%M'
而不是
'%M'
,因为它会将字符串拆分为


我认为您可以尝试使用
'%M'
而不是
'%M'
,因为它会将字符串拆分为


我建议对整个字符串使用单引号,并在其中使用双引号。我认为这将解决错误

$sql = 'SELECT DATE_FORMAT("added_date", "%M") AS Month, 
SUM(total) FROM tbl_order 
GROUP BY DATE_FORMAT("added_date", "%M")';

我建议对整个字符串使用单引号,并在其中使用双引号。我认为这将解决错误

$sql = 'SELECT DATE_FORMAT("added_date", "%M") AS Month, 
SUM(total) FROM tbl_order 
GROUP BY DATE_FORMAT("added_date", "%M")';

如果
added\u date
是一列,您必须仔细注意使用的引号。在MySQL中,列是用倒勾分隔的,但只有当它们与任何列冲突时才有必要这样做

另一个问题是使用双引号来定义字符串和字符串内部。如果你这样做了,你必须逃离内心世界,就像这样:

 $query = $this->db->query("SELECT DATE_FORMAT(added_date, \"%M\") AS Month, SUM(total) FROM tbl_order GROUP BY Month");
如果您有一个语法突出显示文本编辑器(这在现在非常重要),您将看到字符串突出显示如何在原始代码中被视为结束引号的地方立即停止。这是一个警告,你有语法错误

另一个修复方法是使用两种不同的引号。MySQL的默认模式允许字符串值使用双引号或单引号:

 $query = $this->db->query('SELECT DATE_FORMAT(added_date, "%M") AS Month, SUM(total) FROM tbl_order GROUP BY Month');

在实践中,通常最好使用单引号字符串进行查询,因为这样可以防止意外的SQL注入:
$
-类型变量不会以单引号模式插入。

如果
added\u date
是一个列,则必须仔细注意使用的引号。在MySQL中,列是用倒勾分隔的,但只有当它们与任何列冲突时才有必要这样做

另一个问题是使用双引号来定义字符串和字符串内部。如果你这样做了,你必须逃离内心世界,就像这样:

 $query = $this->db->query("SELECT DATE_FORMAT(added_date, \"%M\") AS Month, SUM(total) FROM tbl_order GROUP BY Month");
如果您有一个语法突出显示文本编辑器(这在现在非常重要),您将看到字符串突出显示如何在原始代码中被视为结束引号的地方立即停止。这是一个警告,你有语法错误

另一个修复方法是使用两种不同的引号。MySQL的默认模式允许字符串值使用双引号或单引号:

 $query = $this->db->query('SELECT DATE_FORMAT(added_date, "%M") AS Month, SUM(total) FROM tbl_order GROUP BY Month');

在实践中,通常最好使用单引号字符串进行查询,因为这样可以防止意外的SQL注入:
$
-类型变量不会在单引号模式下插入。

添加了什么\u日期是来自
tbl\u顺序
表的列吗?尽可能将错误粘贴为纯文本也这有助于有类似问题的其他人找到此问题和任何相关解决方案。添加的日期是什么?
tbl\u order
表中的一列?只要可能,也将错误粘贴为纯文本。这有助于其他有类似问题的人找到这个问题和任何相关的解决方案。但是D-shah的建议非常有效。谢谢你的欢迎,对不起,但很高兴你的错误解决了:)不,我还是犯了同样的错误。但是D-shah的建议非常有效。感谢您的欢迎,抱歉,但很高兴您的错误得到了解决:)很高兴提供帮助:)如果您使用的是双引号字符串,则需要在其中使用单引号或分隔双引号,如
“…\”quoted\“…”
以便PHP知道您的意图。很高兴提供帮助:)如果您使用双引号字符串,则需要在其中使用单引号,或者像
“…\”引号“…”
那样分隔双引号,以便PHP知道您的意图。