【问题标题】:Warning preg_match(), mysqli_query() getting error in codeigniter on xampp警告 preg_match(), mysqli_query() 在 xampp 上的 codeigniter 中出现错误
【发布时间】:2015-03-22 11:54:56
【问题描述】:

我正在运行从网站获取订单并将其插入数据库的脚本,它工作正常,但每次脚本运行时我都会收到此错误-

错误 - 严重性:警告 --> preg_match() 期望参数 2 为 字符串,给定对象 C:\xampp\htdocs\system\database\drivers\mysqli\mysqli_driver.php 202

错误 - 严重性:警告 --> mysqli_query() 期望参数 2 是字符串,给定对象 C:\xampp\htdocs\system\database\drivers\mysqli\mysqli_driver.php 179

错误 - 严重性:警告 --> preg_match() 期望参数 2 为 字符串,对象给定 C:\xampp\htdocs\system\database\DB_driver.php 622

错误 - 严重性:警告 --> mysqli_num_rows() 需要参数 1 为 mysqli_result,给定 null C:\xampp\htdocs\system\database\drivers\mysqli\mysqli_result.php 37

这是我下面的代码

   public function insert_orders($data_orders) {

    foreach($data_orders as $key=>$value){
        $order_id=trim($value['order_id']);
        $amount_paid=trim($value['amount_paid']);
        $query = $this->db->query("SELECT * FROM orders WHERE order_id='".$order_id."' AND amount_paid LIKE '".$amount_paid."'");
            if ($query->num_rows > 0) {
          unset($data_orders[$key]);
            }
        }


if(count($data_orders)==0) return;

$this->db->insert_batch('orders', $data_orders);


    }

我看不出这有什么问题,但请你检查一下,让我知道我在哪里犯错了吗?

我正在使用 codeigniter。

数据库设置-

$db['default']['dbdriver'] = 'mysqli';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

【问题讨论】:

  • 检查$order_id和$amount_paid这两个变量有值吗?
  • 是的,它显示了两个值
  • 你的问题可以var_dump($data_orders)吗?
  • 正确显示数组中的所有订单。
  • 尝试在您的 config.php 中设置 $config['log_threshold'] = 3; 并查看完整日志..这可能会帮助您解决问题..

标签: php mysql sql codeigniter mysqli


【解决方案1】:

num_rows 设为num_rows()

喜欢这个

if ($query->num_rows() > 0)

【讨论】:

  • 再次出现同样的错误。我已经用我的数据库设置更新了问题。
  • $query = $this->db->query("SELECT * FROM orders WHERE order_id=".$order_id." AND amount_paid LIKE ".$amount_paid);
  • 没有相同的消息。我尝试了一切,但同样的错误
  • 这个答案是正确的。检查文档 CI 活动记录 num_rows() 是一个函数,它需要在末尾加上括号。
  • 我正在使用括号 - if ($query->num_rows > 0) { unset($data_orders[$key]); }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-03
  • 2012-07-17
  • 2011-12-03
相关资源
最近更新 更多