【问题标题】:PHP MySQL INSERT return value with one query executionPHP MySQL INSERT 返回值,一次查询执行
【发布时间】:2009-09-28 17:13:39
【问题描述】:

在执行 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 什么也不返回。我的功能需要帮助还是这是默认行为?任何提示也会有所帮助。

【问题讨论】:

    标签: php sql mysql return-value


    【解决方案1】:

    INSERT 只返回真或假。要真正返回有用的东西,您将需要一个 SELECT 或类似的查询。使用 INSERT 无法获取任何结果。

    【讨论】:

      【解决方案2】:

      来自 php 文档:

      返回值 对于SELECTSHOWDESCRIBEEXPLAIN 和其他返回结果集的语句,mysql_query() 成功返回资源,FALSE 错误返回。

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

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

      使用mysql_num_rows() 找出为SELECT statementmysql_affected_rows() 返回的行数以找出有多少行受到DELETEINSERTREPLACEUPDATE statement. 的影响

      如果用户无权访问查询引用的表,mysql_query() 也会失败并返回 FALSE

      【讨论】:

        【解决方案3】:

        虽然这是一个非常古老的线程,但它仍然具有相关性。对于那些偶然发现这一点的人(就像我一样),不要放弃!有选项。其实see this answer on SO

        另外,对于 sqli 和 pdo,see this

        基本上,插入语句后跟这些答案中列出的函数之一将为您提供最后一条记录的 ID。函数是这样使用的:

        $LastID = mysql_insert_id();
        

        在 INSERT 语句之后。

        【讨论】:

        • 感谢您发布此信息。 mysql_insert_id 是我要找的。​​span>
        【解决方案4】:

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

        对于选择、显示、描述、解释 和其他语句返回 结果集,mysql_query() 返回一个 成功的资源,或 FALSE 错误。

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

        【讨论】:

          【解决方案5】:

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

          如果要保留函数,请在循环周围添加一个 IF 语句,检查 $results 的类型(例如 is_resource())

          【讨论】:

            【解决方案6】:

            在下面的示例中,我在我的插入子句中添加了“返回”以及我的表的主键,然后在执行之后,我执行获取一个具有最后插入的 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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2020-06-26
              • 1970-01-01
              • 2012-07-11
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多