PHP MySQL INSERT通过一次查询执行返回值

时间:2009-09-28 17:13:40

标签: php sql mysql return-value

在执行INSERT查询时,是否有从MySQL / PHP返回的内容?这是我在CLASS中的功能。

function mysqlQuery($query) {
   // Gets the results from the query
   $results = mysql_query($query, $this->connection);

   // Loops through the queried results as an multi-dimensional array
   while($rows = mysql_fetch_array($results, MYSQL_ASSOC)) {
      // Push results to single array
      $rs[] = $rows;
   }

   // Return results as array
   return $rs;
}

这就是我调用函数的方法

$rs = $dbh->mysqlQuery($query);

但执行INSERT查询时,$ rs不返回任何内容。我的功能需要帮助还是默认行为?任何提示都会有所帮助。

DUH,谢谢你提醒我它返回TRUE / FALSE。出于某种原因,我把它放在脑子里它实际上返回了另一个值,但是在查看我的函数后,我看到我没有检查TRUE / FALSE条件并且只遍历结果数组。

感谢所有正确答案,但首先要正确回答得分,干杯!

6 个答案:

答案 0 :(得分:32)

INSERT只返回true或false。要实际返回有用的东西,您将需要SELECT或类似的查询。用INSERT获取没有结果。

答案 1 :(得分:5)

来自php文档:

返回值 对于SELECTSHOWDESCRIBEEXPLAIN以及其他返回结果集的语句,mysql_query()会在成功时返回资源,或在出错时返回FALSE

对于其他类型的SQL语句,INSERTUPDATEDELETEDROP等,mysql_query()会在成功时返回TRUE或错误FALSE

返回的结果资源应该传递给mysql_fetch_array(),以及用于处理结果表的其他函数,以访问返回的数据。

使用mysql_num_rows()查看为SELECT statementmysql_affected_rows()返回的行数,以了解受DELETE影响的行数,{{1} },INSERTREPLACE

如果用户没有访问查询引用的表的权限,

UPDATE statement.也将失败并返回mysql_query()

答案 2 :(得分:0)

来自php.net http://us2.php.net/mysql_query

  

用于SELECT,SHOW,DESCRIBE,EXPLAIN   和其他声明返回   resultset,mysql_query()返回一个   成功的资源,或FALSE   错误。

     

对于其他类型的SQL语句,   INSERT,UPDATE,DELETE,DROP等,   mysql_query()成功返回TRUE   错误时为FALSE。

答案 3 :(得分:0)

通常,当开发人员构建家庭功能来操纵查询时,他们使用两种方法。一,“查询”,用于SELECTs和co,以及一个“exec”,其他INSERT,UPDATE和其他(如PDO扩展)。

如果你想保留你的功能,在循环周围添加一个IF语句,检查$ results的类型(例如is_resource())

答案 4 :(得分:0)

在下面的示例中,我向insert子句中添加"返回"连同我的表的主键,然后在执行之后,我执行获取获取具有最后插入的id的值的数组。

<?php 
    public function insert($employee){ 

        $sqlQuery = "INSERT INTO employee(user_id,name,address,city) VALUES(:user_id,:name,:address,:city) RETURNING employee_id"; 

        $statement = $this->prepare($sqlQuery); 

        $a ="2002-03-11 12:01AM" ; 

        $statement->bindParam(":user_id", $employee->getUserId(), PDO::PARAM_INT); 
        $statement->bindParam(":name", $employee->getName(), PDO::PARAM_STR); 
        $statement->bindParam(":address", $employee->getAddress(), PDO::PARAM_STR); 
        $statement->bindParam(":city", $employee->getCity(), PDO::PARAM_STR); 
        $statement->execute(); 

        $result = $statement->fetch(PDO::FETCH_ASSOC); 
        return $result["employee_id"]; 

    } 
?>

Source

答案 5 :(得分:0)

尽管这是一个非常古老的线程,但仍然有意义。对于那些偶然发现这个问题的人(像我一样),不要放弃!有选择。实际上,see this answer on SO

另外,对于sqli和pdo,see this

本质上,插入语句后跟那些答案中列出的功能之一将为您提供最后一条记录的ID。