【问题标题】:Insert query not working in codeigniter插入查询在 codeigniter 中不起作用
【发布时间】:2013-08-17 11:11:13
【问题描述】:

我正在尝试使用以下代码从 codeigniter 运行插入查询

$this->db->query($query);

但我收到以下错误:

错误号:1064

您的 SQL 语法有错误;检查手册 对应于您的 MySQL 服务器版本,以便使用正确的语法 第 4 行的 '' 附近

INSERT INTO order_bank 
    (creation_date, order_type, so_no, 
    material_no, description, order_qty, no_of_panels, 
    division, job_number, customer_group, sales_office, 
    sales_group, project_name, project_manager, 
    net_value_myr, credit_status, so_delivery_date, 
    order_delivery_date) 
VALUES ( '2013-07-01', 'ZTOR', 3058627219, 
    101900000000, 'SUPPLY, MODIFY, INSTALL TEST VCU', 
    1, 0, 'AIS (TSM)', 'SC139203J01', 'Industry', 
    'SEA', 'DOM', 'MELAKA', 
    'Phua Tiang Hai', 42954.55, '', '2013-07-11', 
    '2013-07-05');

文件名:C:\wamp\www\system\database\DB_driver.php
行号:330

但是当我在 phpmyadmin 中运行上述查询时,它运行良好。请帮我解决问题

【问题讨论】:

  • “42954.55”上的单引号。其实是不需要的。但是,您需要对其进行测试。
  • 再次检查您的 $query 变量或在此处显示它。这可能是“”问题
  • 但是为什么你不能使用codeigniter插入这样的数组或对象,$this->db->insert('order_bank', $data);
  • @Janith Chinthana:也许他不想用active records
  • 你可以使用 $this->db->last_query();看看codeigniter到底在执行什么sql。

标签: php mysql codeigniter


【解决方案1】:

使用 Codeigniter 提供的活动记录,这样会更安全、更简单!

http://ellislab.com/codeigniter/user-guide/database/active_record.html

例子:-

$this->db->set('description', $description);
$this->db->set('order_qty', $order_qty);
$this->db->set('no_of_panels', $no_of_panels);
$this->db->set('division', $division);
$this->db->set('job_number', $job_number);
$this->db->set('customer_group', $customer_group);
$this->db->set('sales_office', $sales_office);
$this->db->set('sales_group', $sales_group);
$this->db->set('project_name', $project_name);
$this->db->set('project_manager', $project_manager);
$this->db->set('net_value_myr', $net_value_myr);
$this->db->set('credit_status', $credit_status);
$this->db->set('so_delivery_date', $so_delivery_date);
$this->db->set('order_delivery_date', $order_delivery_date);
$this->db->insert('order_bank');

或者如果你的数据存储在一个数组中,那么你可以简单地运行

$this->db->insert('order_bank', $data);

【讨论】:

  • 请提供代码示例。如果链接停止工作,答案仍然有用。
  • 太棒了,更有用! +1 我永远不会使用第一种方式,尽管你做的第二件事更干净。
【解决方案2】:

您必须在控制器类或自动加载文件中加载数据库库。

在自动加载文件中:

$autoload['libraries'] = array('database');

或在控制器类中:

$this->load->library("database");

【讨论】:

    【解决方案3】:

    42954.55 必须是“42954.55”。忽略活动记录示例,因为这与问题无关,这就是此查询失败的原因。

    【讨论】:

      【解决方案4】:

      试试这样的东西

      $data = array(
         'user_id' => '$user_id' ,
         'photo_id' => '$photo_id' ,
         'album_id' => '$album_id'
      );
      
      $this->db->insert('photo_album', $data);
      

      【讨论】:

      • 您在此处将变量转换为字符串?
      猜你喜欢
      • 2017-12-01
      • 2016-05-19
      • 1970-01-01
      • 2017-05-19
      • 1970-01-01
      • 2012-08-18
      相关资源
      最近更新 更多