为了账号安全,请及时绑定邮箱和手机立即绑定

两个mysqli查询

两个mysqli查询

PHP
蝴蝶不菲 2019-07-22 10:06:19
两个mysqli查询有可能有像这样的两个mysqli_查询吗?mysqli_query($dblink, "INSERT INTO images (project_id, user_id, image_name, date_created, link_to_file, link_to_thumbnail, given_name) VALUES ('$project_id', '$user_id', '$image_name', '$date_created', '$link_to_file', '$thumbnail', '$ImageName')") or die(mysql_error());                           mysqli_query($dblink, "INSERT INTO images_history (project_id, user_id, image_name, date_created, link_to_file, link_to_thumbnail, given_name, day, month, year) VALUES ('$project_id', '$user_id', '$image_name', '$date_created', '$link_to_file', '$thumbnail', '$ImageName', '$day', '$month', '$year')") or die(mysql_error());基本上,我想更新DB中的两个表。有更好的方法吗?
查看完整描述

2 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

一劳永逸!使用此函数可以获得脚本中任意位置的无限数量查询的结果。

职能:

您只需将多个查询的输出传递给函数,它就会返回在每个查询中找到的所有结果和错误。

  function loop_multi($result){
    //use the global variable $conn in this function
    global $conn;
    //an array to store results and return at the end
    $returned = array("result"=>array(),"error"=>array());
    //if first query doesn't return errors
      if ($result){
        //store results of first query in the $returned array
        $returned["result"][0] = mysqli_store_result($conn);
        //set a variable to loop and assign following results to the $returned array properly
        $count = 0;
        // start doing and keep trying until the while condition below is not met
        do {
            //increase the loop count by one
            $count++;
            //go to the next result
            mysqli_next_result($conn);
            //get mysqli stored result for this query
            $result = mysqli_store_result($conn);
            //if this query in the loop doesn't return errors
            if($result){
              //store results of this query in the $returned array
              $returned["result"][$count] = $result;
            //if this query in the loop returns errors
            }else{
              //store errors of this query in the $returned array
              $returned["error"][$count] = mysqli_error($conn);
            }
        }
        // stop if this is false
        while (mysqli_more_results($conn));
      }else{
        //if first query returns errors
        $returned["error"][0] = mysqli_error($conn);
      }
    //return the $returned array
    return $returned;
  }

用法:

$query  = "INSERT INTO table1 (attribute1) VALUES ('value1');";$query .= "INSERT INTO table2 (attribute2) VALUES ('value2');";$query .= "SELECT * FROM table3;";//execute query$result = mysqli_multi_query($conn, $query);//pass $result to the loop_multi function$output = loop_multi($result);

输出量

$Output包括由查询排序的两个数组“结果”和“错误”。例如,如果您需要检查在执行第三个查询并获取其结果时是否发生了任何错误,您可以这样做:

if(isset($output['error'][2]) && $output['error'][2] !== ""){
  echo $output['error'][2];}else{
  while($row = $output['result'][2]->fetch_assoc()) {
    print_r($row);
  }}


查看完整回答
反对 回复 2019-07-22
  • 2 回答
  • 0 关注
  • 391 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信