本篇文章给大家谈谈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如何实现多进程)
- mysqli对象中的multi_query()方法
- MySQLi面向对象实践--multi_query
- php multi_query()函数 实现批量执行sql语句
- php multi_query函数
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()方法
一次执行多条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()方法就会出现问题。
以上就介绍了mysqli对象中的multi_query()方法,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。
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语句
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函数
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函数的相关知识,请在本站寻找。
本文标签: