【问题标题】:insert data to mysql with php array and class oop?使用php数组和类oop将数据插入mysql?
【发布时间】:2014-03-13 14:50:26
【问题描述】:

我有一些代码:

function save_article() {
        $data = array(
                'post_id' => NULL,
                'post_author' => 1,
                'post_cat' => $this->var->post('category'),
                'post_title' => $this->var->post('title'),
                'post_content' => $this->var->post('content'),
                'post_date' => null,
                'post_thumb' => $this->var->post('thumbnail'),
                'post_type' => 'tutorial',
                'post_hits' => 0
        );
        $this->db->insert($data, "tbl_posts");
}

这个函数是$this->db对象类的一部分

public function insert($data, $tbl) {
        $query = "insert into ".$tbl." set";
        foreach ($data as $field => $value) {
                $query .= $field."=". mysql_real_escape_string($value) .",";
        }
        $query = rtrim($query, ",");
        $result = mysql_query($query);
        return $result;
}

但由于某种原因,数据没有保存在数据库中。

【问题讨论】:

  • 这个问题似乎跑题了,因为 StackOverflow 不是众包调试工具。

标签: php sql arrays


【解决方案1】:

你有没有费心做一个echo $query 来看看你是否正确地构建了查询? var_dump($result) 怎么样,看看你是否得到一个布尔值 false,这表明失败?我猜不是,否则你会看到你在所有插入的值周围都缺少引号:

这个:

            $query .= $field."=". mysql_real_escape_string($value) .",";

会产生类似的东西

   ... somefield=SOMEVALUE

但由于 SOMEVALUE 没有被引用,它将被解释为一个不存在的字段。

你需要:

            $query .= $field."='". mysql_real_escape_string($value) ."',";
                               ^---                                   ^--

作为您问题的最低限度“修复”。

你的“出于某种原因......”就是你。您无法检查查询是否正确构建,并且您无法检查查询调用是否成功。甚至是骨头:

$result=mysql_query($query) or die(mysql_error()); ^^^^^^^^^^^^^^^^^^^^^^

会帮助你解决这个问题。

【讨论】:

    【解决方案2】:
     $query = "insert into ".$tbl." set"; 
    

    设置你缺少一个空格后这样做

    $query = "insert into ".$tbl." set ";
    

    在 foreach 你错过了单引号试试这个

    foreach ($data as $field => $value) {
                $query .= $field."='". mysql_real_escape_string($value) ."',";
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-21
      • 2015-08-02
      • 2012-04-20
      • 1970-01-01
      • 2015-03-25
      相关资源
      最近更新 更多