2009-09-28 112 views
7

在正在执行的INSERT查询中是否有从MySQL/PHP返回的任何内容?这是我在CLASS中的函数。PHP MySQL INSERT返回值与执行一个查询

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条件,只循环遍历结果数组。

感谢所有正确的答案,但首先正确回答得到的点,欢呼!

回答

25

INSERT只是返回true或false。要实际返回有用的东西,您需要一个SELECT或类似的查询。没有结果使用INSERT进行提取。

+0

抢先回答,日Thnx – 2009-09-28 17:21:15

5

从PHP文件:

返回值 对于SELECT,SHOW,描述,解释等语句返回的结果集,mysql_query()成功返回的资源,或者在错误FALSE。

对于其他类型的SQL语句,INSERTUPDATEDELETEDROP等,mysql_query()回报TRUE成功或FALSE上的错误。

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

使用mysql_num_rows()找出多少行返回一个SELECT statementmysql_affected_rows()找出多少行受一DELETEINSERTREPLACE,或UPDATE statement.

mysql_query()也将失败,如果返回FALSE用户没有权限访问查询引用的表。

0

从php.net http://us2.php.net/mysql_query

对于SELECT,SHOW,描述,解释 等语句返回的结果集 ,请求mysql_query()返回成功则 资源,或 错误FALSE。

对于其它类型的SQL语句, 插入,更新,删除,DROP,等, 的mysql_query()返回TRUE成功 或FALSE上错误。

0

通常,当开发人员构建主函数来操纵查询时,他们使用两种方法。一个是用于SELECT和co的“查询”,另一个是“exec”,其他INSERT,UPDATE和其他(如在PDO扩展中)。

如果你想让你的功能,加上周围的回路中的IF语句检查$结果类型(有is_resource()为例)

0

在下面的例子中,我添加到我的插入子句“返回”与我的表的主键,然后执行后,我做了一个获取数组与最后插入的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