为什么mySQL不能执行语句 for ii

C语言 c++ php mysql nginx linux lnmp lamp lanmp memcache redis 面试 笔记 ppt 设计模式 问题 远程连接 草榴 草榴社区 caoliu
从php5.0开始增加mysql(i)支持 , 新加的功能都以对象的形式添加
i表示改进的意思 功能多、效率高、稳定
编译时参数:
./configure --with-mysql=/usr/bin/mysql_config \ #使用 Mysql ClientLibrary(libmysql)构建
--with-mysqli=mysqlnd \ #使用 Mysql Native Dirver 即mysqlnd
--with-pdo-mysql=mysqlnd #使用 Mysql Native Dirver 即mysqlnd
由于版权问题 从 php5.3开始 php开始用 mysqlnd 替代 libmysql.dll mysqlnd 是zend公司开发的mysql数据库驱动,相比原来各方面都有所提高
#使用mysqlnd编译
./configure --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd 加上你的参数
mysqli 过程、对象方式都支持
mysqli提供的三个类:& &1、mysqli 和连接相关的& &2、MySQLi_Result
处理结果集& &3、mysqli_stmt 预处理类 #设置字符集set_charset
#获取字符集character_set_name
获取数据库对象
//创建mysqli对象方式 1
//屏蔽连接产生的错误
$mysqli = new mysqli('127.0.0.1', 'root', '', 'test');
//只能用函数来判断是否连接成功
if(mysqli_connect_errno())
echo mysqli_connect_error();
//创建mysqli对象方式 2 可以设置一些参数
$mysqli = mysqli_init();
$mysqli-&options(MYSQLI_OPT_CONNECT_TIMEOUT, 2);//设置超时时间
$mysqli-&real_connect('127.0.0.1', 'root', '', 'test');&
query:失败返回false,select成功返回结果集对象,其他返回true&非false,意味着sql执行成功了
无结果集示例
$mysqli = mysqli_init();
$mysqli-&options(MYSQLI_OPT_CONNECT_TIMEOUT, 2);//设置超时时间
$mysqli-&real_connect('127.0.0.1', 'root', '', 'test');
$sql = "insert into limove(`name`, `order`) values('aa', 11)";
$rst = $mysqli-&query($sql);
$sql = "delete from limove where id = 221";
$rst = $mysqli-&query($sql);
if($rst === false)
ee($mysqli-&errno);
ee($mysqli-&error);
ee($mysqli-&affected_rows);
ee($mysqli-&insert_id);
ee($mysqli);
$mysqli = mysqli_init();
$mysqli-&options(MYSQLI_OPT_CONNECT_TIMEOUT, 2);//设置超时时间
$mysqli-&real_connect('127.0.0.1', 'root', '', 'test');
$sql = "select * from limove as limove_as";
$result = $mysqli-&query($sql);
if($result === false)
ee($mysqli-&errno);
ee($mysqli-&error);
ee($result-&num_rows);
ee($result-&field_count);
ee($result-&field_count);
#获取所有字段的信息
$field_arr = $result-&fetch_fields();
#移动字段的指针
// $result-&field_seek(1);
#依次获取字段的信息
while($field = $result-&fetch_field())
ee($field);
#移动记录指针
$result-&data_seek(1);
#一次获取所有数据
$data = $result-&fetch_all(MYSQLI_ASSOC);
#关联数组方式获取结果集
$data = array();
$result-&data_seek(0); #重置指针到起始
while($row = $result-&fetch_assoc())
$data[] = $row;
ee($data);
$result-&free();
$mysqli-&close();
一次 执行多条语句 multiquery&(不推荐使用)
  无结果集,此时 affected_rows 只能获取到最后的那条影响的条数
$mysqli = mysqli_init();
$mysqli-&options(MYSQLI_OPT_CONNECT_TIMEOUT, 2);//设置超时时间
$mysqli-&real_connect('127.0.0.1', 'root', '', 'test');
$sql_arr = array(
'insert into limove(id,`name`, `order`) values(null, 1, 2)',
'insert into limove(id,`name`, `order`) values(null, 1, 222)',
'delete from limove where `order` = 2',
$sql = implode(';', $sql_arr);
$result = $mysqli-&multi_query($sql);
if($result === false)
ee($mysqli-&errno);
ee($mysqli-&error);
$mysqli-&close();
$mysqli = mysqli_init();
$mysqli-&options(MYSQLI_OPT_CONNECT_TIMEOUT, 2);//设置超时时间
$mysqli-&real_connect('127.0.0.1', 'root', '', 'test');
$sql_arr = array(
'show tables',
'desc select * from limove',
'show create table limove',
$sql = implode(';', $sql_arr);
$rst = $mysqli-&multi_query($sql);
if($rst === false)
ee($mysqli-&errno);
ee($mysqli-&error);
$result = $mysqli-&store_result();#获取当前光标所在的结果集
$data = $result-&fetch_all();
ee($data);
}while($mysqli-&next_result());#光标移动到下一个结果集
$mysqli-&close();
事务处理:
$mysqli=new mysqli("localhost", "root", "123456", "xsphpdb");
//事务处理
$mysqli-&autocommit(0);
$error=true;
$price=50;
$sql="update zh set ye=ye-{$price} where name='zhangsan'";
$result=$mysqli-&query($sql);
if(!$result){
$error=false;
echo "从张三转出失败&br&";
if($mysqli-&affected_rows==0){
$error=false;
echo "张三的钱没有变化";
echo "从张三账号中转出成功!&br&";
$sql="update zh set ye=ye+{$price} where name='lisi1'";
$result=$mysqli-&query($sql);
if(!$result){
$error=false;
echo "从李四转入失败&br&";
if($mysqli-&affected_rows==0){
$error=false;
echo "李四的钱没有变化";
echo "向李四账号中转入成功!&br&";
if($error){
echo "转账成功!";
$mysqli-&commit();
echo "转账失败!";
$mysqli-&rollback();
$mysqli-&autocommit(1);
$mysqli-&close();
mysqli_stmt:mysqli预处理类(推荐):表示了准备好的一个语句,服务器端只编译一次sql用mysqli和mysqli_result可以实现同样的功能优点:效率高,适用于语句相同只是数据不同的情况 ,可以阻止sql注入的产生
&mysqli_stmt示例:非select语句
'fns.php';
//创建mysqli对象方式
$mysqli = @new mysqli('127.0.0.1', 'root', '', 'test');
//只能用函数来判断是否连接成功
if(mysqli_connect_errno())
echo mysqli_connect_error();
$mysqli-&set_charset('utf8');
$sql = "insert into limove values(?, ?, ?)"; //语句一样值不相同情况
//获取stmt对象
$stmt = $mysqli-&stmt_init();
//准备一条sql语句,放到服务器端
$stmt-&prepare($sql);
//mysqli中有直接的方法可用
$stmt = $mysqli-&prepare($sql);
//绑定参数
$stmt-&bind_param('iss', $id, $name, $order);
for($i=0;$i&5;$i++){
$name = 'name';
$order = mt_rand(1, 1000);
$stmt-&execute();
ee($stmt-&insert_id);
//影响的行数 注:最后一条执行的
ee($stmt-&affected_rows);
ee($stmt-&errno);
//错误信息
ee($stmt-&error);
//stmt对象中可以看到更多的信息
ee($stmt);
eee($mysqli);
&&mysqli_stmt示例:select语句 1&
'fns.php';
//创建mysqli对象方式
$mysqli = @new mysqli('127.0.0.1', 'root', '', 'test');
//只能用函数来判断是否连接成功
if(mysqli_connect_errno())
echo mysqli_connect_error();
$mysqli-&set_charset('utf8');
$sql = "select * from limove where id&?";
$stmt = $mysqli-&prepare($sql);
$stmt-&bind_param('i', $i);
$stmt-&bind_result($a, $b, $c);
$stmt-&execute();
//把结果都取过来
$stmt-&store_result();
//获取字段信息
$result = $stmt-&result_metadata();//只能获取一些字段信息
while($field = $result-&fetch_field())
ee($field-&name);
//$stmt-&data_seek(2); //移动指针的位置,只有执行 store_result 后才能生效
while($stmt-&fetch()){
ee("{$a}|{$b}|{$c}");
//记录的条数 ,只有执行 store_result 后才能生效
ee($stmt-&num_rows);
ee($stmt);
$stmt-&free_result();
$stmt-&close();
&&&mysqli_stmt示例:select语句 2
'fns.php';
//创建mysqli对象方式
$mysqli = @new mysqli('127.0.0.1', 'root', '', 'test');
//只能用函数来判断是否连接成功
if(mysqli_connect_errno())
echo mysqli_connect_error();
$mysqli-&set_charset('utf8');
$sql = "select * from limove where id&?";
$stmt = $mysqli-&prepare($sql);
$stmt-&bind_param('i', $i);
$stmt-&bind_result($a, $b, $c);
$stmt-&execute();
//获取结果
$result = $stmt-&get_result();
$data = $result-&fetch_all(MYSQLI_ASSOC);
ee($data);
阅读(...) 评论()!!!怎么无法开启mysqli 扩展?急求解决!!!
本帖最后由 adjianfei 于
13:03 编辑
请问安装了wdlinux后,同时在php.ini开启mysqli 扩展:
extension=php_mysql.dll
extension=php_mysqli.dl
(10.22 KB)
但还是显示mysqli没有开启?如图:
急求解决!!
谢谢各位大侠
www.shop819.com
多看签名,会有你要的答案
看清提问三步曲及多看教程/FAQ索引(,,,),益处多多.
管理你好!我仔细认真的看了每个问题,确实没有我要的问题解决方法,另外能不能告诉我一下,php中的php_mysqli.dl这个文件在那个目录中查找,我发现可能没有这&php_mysqli.dl&
www.shop819.com
管理你好!我仔细认真的看了每个问题,确实没有我要的问题解决方法,另外能不能告诉我一下,php中的php_mys ...
adjianfei 发表于
去掉分号启用PHP扩展是仅限Windows系统下的做法,在Linux下需要编译
这里有一些脚本可以安装扩展,
本帖最后由 adjianfei 于
22:43 编辑
谢谢!终于解决了,解决的步骤:
1、用ssh登入
2、mysqli的安装(因为一键安装包中没有安装mysqli扩展)
wget -c http://down.wdlinux.cn/in/mysqli_ins.sh
chmod 755 mysqli_ins.sh
./mysqli_ins.sh复制代码
3、登入你的虚拟控制面板http://ip:8080
1)点击网站管理中的php设置如图:
(14.81 KB)
2)点击&在线编辑文件&如图:
(12.46 KB)
在文件找到如下:处添加一行:&extension=mysqli.so复制代码&如下图
添加好后按保存后显示如图:
(19.54 KB)
3)重启&web&点击系统管理如图显示:
点击&服务重启&后如图:
点击web重启。就ok了
4、检查mysqli.dl是否成功,用phpinfo.php打开:一般是http://你的域名/phpinfo.php如果出现如图所示就表示成功了。
注:phpinfo.php文里的代码:
&?
phpinfo();
?&复制代码
www.shop819.com
谢谢!终于解决了,解决的步骤:
1、用ssh登入
2、mysqli的安装(因为一键安装包中没有安装mysqli扩展)
adjianfei 发表于
不用那么麻烦啊,直接下载并执行http://down.wdlinux.cn/in/mysqli_ins.sh这个脚本就可以一键安装了,它会自动在php.ini里添加相关设置的(如果你之前没有自行添加的话)
看清提问三步曲及多看教程/FAQ索引(,,,),益处多多.
正好遇到这个问题,谢谢LZ和版主了。
& & 刚好遇到这个问题,谢谢你的资料整理。
& & 刚好遇到需要打开Mysqli,谢谢了。
谢谢这么详细的解决办法!
& &提示成功了,耶重启web了,为何phpinfo里还是看不到。
(29.36 KB)
& &为什么严格按照这个步骤来安装,phpinfo还是不显示,求救啊
我的也不行
(45.07 KB)
麻辣生活网
我想问的是这样安装以后&&原来的MYSQL还能用不?
[通过 QQ、MSN 分享给朋友]没有更多推荐了,
不良信息举报
举报内容:
使用mysqli一次执行多条SQL语句
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!mysqli 批量执行多条语句
可以一次性的执行多个操作或取回多个结果集。
$mysqli = new mysqli("localhost", "root", "111111", "test");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
/* multi_query执行一个或多个针对数据库的查询。多个查询用分号进行分隔。 */
= "SELECT * from test where id = 1;";
$query .= "SELECT name FROM test";
/* 批量执行查询 ,如果第一个查询失败则返回 FALSE。*/
if ($mysqli-&multi_query($query)) {
/* 获取第一个结果集 */
if ($result = $mysqli-&store_result()) {
while ($row = $result-&fetch_row()) {
printf("%s\n", $row[0]);
$result-&free();
/* 检查一个多查询是否有更多的结果 */
if ($mysqli-&more_results()) {
printf("-----------------\n");
//准备下一个结果集
} while ($mysqli-&next_result());
/* close connection */
$mysqli-&close();
没有更多推荐了,
不良信息举报
举报内容:
mysqli 批量执行多条语句
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!Keyboard Shortcuts?
Next menu item
Previous menu item
Previous man page
Next man page
Scroll to bottom
Scroll to top
Goto homepage
Goto search(current page)
Focus search box
Change language:
Brazilian Portuguese
Chinese (Simplified)
运行时配置
这些函数的行为受 php.ini 中的设置影响。
MySQLi配置选项
可修改范围
PHP_INI_SYSTEM
自PHP 5.2.4起可用。
PHP_INI_SYSTEM
自PHP 5.3.0起可用。
PHP_INI_SYSTEM
自PHP 5.3.0起可用。
PHP_INI_SYSTEM
自PHP 5.0.0起可用。
PHP_INI_ALL
自PHP 5.0.0起可用。
PHP_INI_ALL
自PHP 5.0.0起可用。
PHP_INI_ALL
自PHP 5.0.0起可用。
PHP_INI_ALL
自PHP 5.0.0起可用。
PHP_INI_ALL
自PHP 5.0.0起可用。
PHP_INI_SYSTEM
自PHP 4.3.5起可用。
PHP_INI_SYSTEM
自 PHP 5.6.0 起可用。
PHP_INI_SYSTEM
自PHP 5.3.0起可用。
关于前面出现的PHP_INI_*系列常量的详细定义,请参阅一章。
这是配置指令的简短说明。
mysqli.allow_local_infile
允许Mysql的Load Data语句访问PHP角度看的本地文件。
mysqli.allow_persistent
开启使用函数创建持久化连接的能力。
mysqli.max_persistent
可以创建的持久化连接的最大数量,设置为0表明不限制。
mysqli.max_links
每个进程中Mysql连接的最大数量。
mysqli.default_port
当没有指定其他端口号时使用的默认的用于连接数据库服务器的TCP端口号。如果没有设置默认值,
端口号将会按照顺序从环境变量MYSQL_TCP_PORT,/etc/services
文件中的mysql-tcp条目或编译期的MYSQL_PORT常量等位置获取。
Win32仅使用MYSQL_PORT常量。
mysqli.default_socket
当连接到本地数据库服务器时如果没有指定其他socket名称,使用的默认socket名称。
mysqli.default_host
当连接到数据库服务器时, 如果没有指定其他主机地址,使用的默认服务器主机。不要在
mysqli.default_user
当连接到数据库服务器时,如果没有指定其他用户名,使用的默认用户名。不要在
mysqli.default_pw
当连接到数据库服务器时,如果灭有指定其他密码,使用的默认密码。不要在
mysqli.reconnect
连接丢失时是否自动重新连接。
mysqli.rollback_on_cached_plink
Used for rollbacking connections put back into the persistent
connection pool.
mysqli.cache_size
仅可用于 。
用户不能通过API调用或运行时配置来设置MYSQL_OPT_READ_TIMEOUT。
注意,如果可能这样做那么libmysql和流对MYSQL_OPT_READ_TIMEOUT
的值将会有不同的解释。
There are no user contributed notes for this page.

我要回帖

更多关于 i春秋 代码执行 的文章

 

随机推荐