GVKun编程网logo

php:如何运行多个php multi_query语句(php如何实现多进程)

15

本篇文章给大家谈谈php:如何运行多个phpmulti_query语句,以及php如何实现多进程的知识点,同时本文还将给你拓展mysqli对象中的multi_query()方法、MySQLi面向对象实

本篇文章给大家谈谈php:如何运行多个php multi_query语句,以及php如何实现多进程的知识点,同时本文还将给你拓展mysqli对象中的multi_query()方法、MySQLi面向对象实践--multi_query、php multi_query()函数 实现批量执行sql语句、php multi_query函数等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

php:如何运行多个php multi_query语句(php如何实现多进程)

php:如何运行多个php multi_query语句(php如何实现多进程)

如何解决php:如何运行多个php multi_query语句?

我需要了解 MysqLi multi_query() 的工作原理。

我正在处理带有(唯一)字段“f1”的表“stefano”。

如果我跑

<?
$db->multi_query(
    "insert into playground.stefano (f1) values (''a''); insert into playground.stefano (f1) values (''b'');"
);
$db->multi_query(
    "insert into playground.stefano (f1) values (''c''); insert into playground.stefano (f1) values (''d'');"
);
?>

只有 ''a'' 和 ''b'' 值被填充到数据库中。

请不要告诉我我可以使用具有 4 个不同查询的唯一 multi_query 语句。我知道我可以,但我需要了解为什么忽略第二个 multi_query。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

mysqli对象中的multi_query()方法

mysqli对象中的multi_query()方法

一次执行多条SQL命令使用mysqli对象中的multi_query()方法。

具体做法:

        把多条SQL命令写在同一个字符串里作为参数传递给multi_query()方法,多条SQL之间使用分号(;)分隔。如果第一条命令在执行里没有出错,这个方法就会返回TRUE,否则返回FALSE 。

        由于multi_query()方法能够连接执行一个或多个查询,而每条SQL命令都可能返回一个结果,在必要时需要获取每一个结果集。所以对该方法返回结果的处理也有一些变化,第一条查询命令的结果要用mysqli对象中的use_result()或store_result()方法来读取,当然,使用store_result()方法将全部结果立刻返回到客户端,这种做法效率更高。另外,可以用mysqli对象中的more_results()方法检查是否还有其他的结果集。

        如果想对下一个结果集进行处理,应该调用mysqli对象中的next_results()方法,获取下一个结果集。这个方法返回TRUE或FALSE。

        如果有下一个结果集,也需要使用use_result()或store_result()方法来读取。


执行多条SQL命令代码如下:
    $mysqli=new mysqli("localhost","mysql_user","mysql_pwd","my_db_name");
    /* check connection */
    if($mysqli->mysql_connect_errno()){
        printf ("连接失败:%s
",mysql_connect_error());
        exit();
    }
    $query="SET NAMES GB2312;";
    $query.="SELECT CURERENT_USER();"                            //获取使用连接的用户名
    $query.="SELECT name,phone FROM contactinfo LIMIT 2";
    /* execute multi query */   
if($mysqli->multi_query($query)){
        do{
            if($result=$mysqli->store_result()){
                //$mysqli->store_result() 获取第一个结果集
                while($row=$result->fetch_row()){
                    foreach($row as $data){
                        echo $data."  ";
                    }
                }
                echo ''
'';
            }
                    
            if($mysqli->more_results()){
                echo "----------------------------
";
            }
        }while($mysqli->next_result());
    }
    /* close connection */
    $mysqli->close();
?>

注:

        在以上示例中,使用mysqli对象中的multi_query()方法一次执行三条SQL命令,获取多个结果集并从中遍历数据。如果在命令的处理过程中发生了错误,multi_query()和next_result()方法就会出现问题。

        multi_query()方法的返回返回值,以及mysqli的属性errno、error、info等只与第一条SQL命令有关,无法判断第二条及以后的命令是否在执行时发生了错误。所以在执行multi_query()方法的返回值是TRUE时,并不意味着后续命令在执行时没有出错。

以上就介绍了mysqli对象中的multi_query()方法,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

MySQLi面向对象实践--multi_query

MySQLi面向对象实践--multi_query

使用multi_query可以实现执行多条SQL语句,每一条SQL语句通过分号分隔。

需要注意的是:

  多条用分号分隔的SQL语句中,只要有一条SQL语句执行失败,那么这一条SQL语句以及之后的SQL语句就不会执行。

  只有当第一条SQL语句执行失败,那么multi_query()的返回值才为false。如果第一条SQL语句执行成功了,那么都会返回true。

<?php
    $mysqli = new Mysqli();
    $mysqli->connect("localhost","root","root","test");
    if ( $mysqli->connect_errno ){
        die( $mysqli->connect_error );
    }
    $mysqli->set_charset("utf8");
    $sql = "";
    $sql .= "truncate table mysqli;"; //第一条SQL语句
    $sql .= "insert into mysqli (id, name) values (null, ''aaaa''),(null, ''bbbb'');";//第二条SQL语句
    $sql .= "update table mysqli where uid = 1;";//第三条SQL语句,因为没有uid字段,所以出错
    $sql .= "insert into mysqli (id, name) values (null, ''cccc'');";
    $res = $mysqli->multi_query($sql);
    var_dump($res);
?>

  查看数据库:

mysql> select * from mysqli;
+----+------+
| id | name |
+----+------+
|  1 | aaaa |
|  2 | bbbb |
+----+------+
2 rows in set (0.00 sec)

  可以看到第三条SQL语句执行失败之后,第四条插入数据的SQL语句也没有执行

 

multi_query执行多条select查询语句

  对于执行多条select语句,那么返回的结果集也会有多个,所以就需要“切换结果集”,

  使用Mysqli_result Mysqli::use_result 和 Mysqli_result Mysqli::store_result()都可以将获取multi_query的结果中 指针所指向的结果集,通过移动内部指针来遍历多个结果集。

  可以使用bool Mysqli::more_result()来检测是否还有结果集,如果有,则可以通过bool Mysqli::next_result()将内部指针指向下一个结果集。

方法一:使用Mysqli_result Mysqli::use_result()

<?php
    $mysqli = new Mysqli();
    $mysqli->connect("localhost","root","root","test");
    if ( $mysqli->connect_errno ){
        die( $mysqli->connect_error );
    }
    $mysqli->set_charset("utf8");
    $sql = "";
    $sql .= "select * from mysqli;";
    $sql .= "select * from user;";
    $res = $mysqli->multi_query($sql);
    if( $res ) {
        do{
            if( $mysqli_result = $mysqli->use_result() ){
                print_r( $mysqli_result->fetch_all( MYSQLI_ASSOC ) );
            }
        } while( $mysqli->more_results() && $mysqli->next_result() );
    } else {
        echo "error ".$mysqli->errno." : ".$mysqli->error;
    }
?>

  

方法二:Mysqli_result Mysqli::store_result()

<?php
    $mysqli = new Mysqli();
    $mysqli->connect("localhost","root","root","test");
    if ( $mysqli->connect_errno ){
        die( $mysqli->connect_error );
    }
    $mysqli->set_charset("utf8");
    $sql = "";
    $sql .= "select * from mysqli;";
    $sql .= "select * from user;";
    $res = $mysqli->multi_query($sql);
    if( $res ) {
        do{
            if( $mysqli_result = $mysqli->store_result() ){
                print_r( $mysqli_result->fetch_all( MYSQLI_ASSOC ) );
            }
        } while( $mysqli->more_results() && $mysqli->next_result() );
    } else {
        echo "error ".$mysqli->errno." : ".$mysqli->error;
    }
?>

  

 

php multi_query()函数 实现批量执行sql语句

php multi_query()函数 实现批量执行sql语句

 

 

multi_query()函数:同时执行多条查询语句。今天我看到了查询多条语句的另外一种写法,这种写法是基于mysql的,在我的映象中Sqlserver也有这样的写法,但此处多了一个multi_query()函数,而且还加了一个”.”的连接符号,值得注意。

下面我来举个实例说明一下:

$servername="localhost";
$username="root";
$password="admin";
$dbname="test"

$conn=new mysqli($servername,$username,$password,$dbname)or die (mysqli_error());

$sql="INSERT INTO `hello`(`firstname`,`lastname`,`email`)VALUES(''xiao'',''hong'',''xiaohong@163.com'');";

$sql.="INSERT INTO `hello`(`firstname`,`lastname`,`email`)VALUES(''xiao'',''qing'',''xiaoqing@168.com'');";

$sql.="INSERT INTO `hello`(`firstname`,`lastname`,`email`)VALUES(''xiao'',''yue'',''xiaoyue@163.com'')";

if($conn->multi_query($sql)===true){
   echo "Insert record successfully!";
}else{
   echo $conn->error();
}

$conn->close();

此处注意 如果你使用了一个循环来提交你的数据 并且是多次提交的话 那么你应该需要把结果集滞空,来准备下一个结果集
do{
        $conn->next_result();
    }while($conn->more_results());

php multi_query函数

php multi_query函数

multi_query()函数:同时执行多条查询语句;
'').addClass(''pre-numbering'').hide(); $(this).addClass(''has-numbering'').parent().append($numbering); for (i = 1; i '').text(i)); }; $numbering.fadeIn(1700); }); });

以上就介绍了php multi_query函数,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

关于php:如何运行多个php multi_query语句php如何实现多进程的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于mysqli对象中的multi_query()方法、MySQLi面向对象实践--multi_query、php multi_query()函数 实现批量执行sql语句、php multi_query函数的相关知识,请在本站寻找。

本文标签: