php的mysql语法
阅读原文时间:2023年07月10日阅读:3

php操作mysqli(示例代码)

更新时间:2013年10月28日 :: 作者: 我要评论
关注脚本之家微信公众号(jb51net) 每周都有大礼相送哦
php操作mysqli的示例代码。需要的朋友可以过来参考下,希望对大家有所帮助
<?php
define("MYSQL_OPEN_LOGS",true);
class mysqliHelp
{

private $db;

public function \_\_construct()  

{
//如果要查询日志log的话,怎么办

}

public function \_\_get($name )  
{  
  //echo "\_\_GET:",$name;  
  if(in\_array($name,array("db"),true))//或者isset($this->$name)  
  return $this->$name;  
  return null;

}  
public function connect($host,$user,$pass,$db,$charSet='utf8',$force=false)  
{

    if($this->db && ($this->db instanceof mysqli) && !$force)  
    {  
        return ;  
    }  
    $this->db=new mysqli($host,$user,$pass,$db);  
    if (mysqli\_connect\_error()) {  
    die('Connect Error (' . mysqli\_connect\_errno() . ') '  
            . mysqli\_connect\_error());  
    }  
    $this->db->set\_charset($charSet);

}

 //$dbname string  
 //返回值 如果成功则返回 TRUE,失败则返回 FALSE。  
function select\_db ($dbname )  
{  
    return $this->db->select\_db($dbname);  
}

//$query mysqli\_result  
//$resulttype int  MYSQLI\_ASSOC, MYSQLI\_NUM, or MYSQLI\_BOTH. Defaults to MYSQLI\_BOTH.  
//返回值 Returns an array of strings that corresponds to the fetched row or NULL if there are no more rows in resultset.  
function fetch\_array(/\*mysqli\_result\*/ $query, $resulttype = MYSQLI\_ASSOC)  
{  
    //var\_dump(!null);  
    if(!$query || !($query instanceof mysqli\_result))  
    return NULL;  
    return $query->fetch\_array($resulttype);//  
}

function data\_seek($result,$offset)  
{

   return $result->data\_seek($offset);

}

function fetch\_assoc($query)  
{

    return $query->fetch\_assoc();// 关联数组  
}

function fetch\_row($query)  
{  
    return $query->fetch\_row();// 索引数组,数字0,1。eg。。。  
}

function fetch\_fields($query)  
{  
     return $query->fetch\_fields();  
}

//$query string
//$resultmode int
//返回值 如果成功则返回 TRUE,失败则返回 FALSE。 For SELECT, SHOW, DESCRIBE or EXPLAIN mysqli_query() will return a result object.
public function query($sql ,$resultmode=MYSQLI_STORE_RESULT )
{
if(MYSQL_OPEN_LOGS) {

        $sqlstarttime = $sqlendttime = ;

        $mtime = explode(' ', microtime());  
        $sqlstarttime = $mtime\[\]+ $mtime\[\] ;

    }

    //真正查询  
    $query=$this->db->query($sql,$resultmode);

    if(MYSQL\_OPEN\_LOGS) {  
                   // sleep(1);  
        $mtime = explode(' ', microtime());  
        $sqlendttime =  $mtime\[\] + $mtime\[\]  ;  
        $sqlQueryTime = number\_format($sqlendttime - $sqlstarttime,);  
        //dblogs($sql, $sqlQueryTime,1);  
        $explain = array();  
        $info = $this->db->info;  
        if($query && preg\_match("/^(select )/i", $sql)) {  
            $explain = $this->fetch\_array($this->db->query('EXPLAIN '.$sql), MYSQLI\_ASSOC );  
        }  
        $GLOBALS\['mysql\_debug\_query'\]\[\] = array('sql'=>$sql, 'time'=>$sqlQueryTime, 'info'=>$info, 'explain'=>$explain);  
    }       

    if(!$query)  
    {  
      $this->halt('MySQL Query Error', $sql);  
    }

    return $query;

}

//返回值 mysqli\_stmt对象  
function prepare($sql)  
{  
  return $this->db->prepare($sql);

}

function affected\_rows() {

    return  $this->db->affected\_rows;  
}  
function  error()  
{  
    return  $this->db->error;

}  
function errno()  
{  
    return  $this->db->errno;  
}  
//result 没有

function num\_rows($query)  
{  
    return $query->num\_rows;

}

//返回值 int  The number of fields from a result set.  
//也可以用另外一种方式  mysqliHelp->db->field\_count返回。  
function num\_fields($query)  
{  
    return  $query->field\_count;  
}

function free\_result($query)  
{  
    //all methods are equivalent;  
    $query->free();  
    //$query->free\_result();  
    //$query->close();  
}

function insert\_id()  
{

     if(($id = $this->db->insert\_id)>= )  
     {

        return $id;  
     }else  
     {  
        $idArr=$this->fetch\_array($this->query("SELECT last\_insert\_id() as id"));  
        return  intval($idArr\[\]);  
     }

    //return ($idArr=$this->fetch\_array($this->query("SELECT last\_insert\_id() as id")))\[0\]  
    //return ($id = $this->db-insert\_id)>= 0 ? $id : 0 ;  
}

function close() {

    return $this->db->close();  
}

function halt($message,$sql)  
{  
    $dberror = $this->error();  
    $dberrno = $this->errno();  
    $help\_link = "http://faq.comsenz.com/?type=mysql&dberrno=".rawurlencode($dberrno)."&dberror=".rawurlencode($dberror);  
    echo "<div style=\\"position:absolute;font-size:11px;font-family:verdana,arial;background:#EBEBEB;padding:0.5em;\\">  
            <b>MySQL Error</b><br>  
            <b>Message</b>: $message<br>  
            <b>SQL</b>: $sql<br>  
            <b>Error</b>: $dberror<br>  
            <b>Errno.</b>: $dberrno<br>  
            <a href=\\"$help\_link\\" target=\\"\_blank\\">Click here to seek help.</a>  
            </div>";  
    exit();  
}

function \_\_destruct()  
{

   $this->db=null;

}

/\*  MySQLi类  
    面向对象接口  面向过程接口  别名  描述  
    属性  
    $mysqli->affected\_rows   mysqli\_affected\_rows()  N/A 获取前一个Mysql操作的受影响行数  
    $mysqli->client\_info mysqli\_get\_client\_info()    N/A 返回字符串类型的Mysql客户端版本信息  
    $mysqli->client\_version  mysqli\_get\_client\_version() N/A 返回整型的Mysql客户端版本信息  
    $mysqli->connect\_errno   mysqli\_connect\_errno()  N/A 返回最后一次连接调用的错误代码  
    $mysqli->connect\_error   mysqli\_connect\_error()  N/A 返回一个字符串描述的最后一次连接调用的错误代码  
    $mysqli->errno   mysqli\_errno()  N/A 返回最近的函数调用产生的错误代码  
    $mysqli->error   mysqli\_error()  N/A 返回字符串描述的最近一次函数调用产生的错误代码  
    $mysqli->field\_count mysqli\_field\_count()    N/A 返回最近一次查询获取到的列的数目  
    $mysqli->host\_info   mysqli\_get\_host\_info()  N/A 返回一个能够代表使用的连接类型的字符串  
    $mysqli->protocol\_version    mysqli\_get\_proto\_info() N/A 返回使用的Mysql协议的版本信息  
    $mysqli->server\_info mysqli\_get\_server\_info()    N/A 返回Mysql服务端版本的信息  
    $mysqli->server\_version  mysqli\_get\_server\_version() N/A 返回整型的Mysql服务端版本信息  
    $mysqli->info    mysqli\_info()   N/A 最近一次执行的查询的检索信息  
    $mysqli->insert\_id   mysqli\_insert\_id()  N/A 返回最后一次查询自动生成并使用的id  
    $mysqli->sqlstate    mysqli\_sqlstate()   N/A 返回前一个Mysql操作的SQLSTATE错误  
    $mysqli->warning\_count   mysqli\_warning\_count()  N/A 返回给定链接最后一次查询的警告数量  
    方法  
    mysqli->autocommit() mysqli\_autocommit() N/A 打开或关闭数据库的自动提交功能  
    mysqli->change\_user()    mysqli\_change\_user()    N/A 更改指定数据库连接的用户  
    mysqli->character\_set\_name(), mysqli->client\_encoding mysqli\_character\_set\_name() mysqli\_client\_encoding()    返回数据库连接的默认字符集  
    mysqli->close()  mysqli\_close()  N/A 关闭先前打开的数据库连接  
    mysqli->commit() mysqli\_commit() N/A 提交当前事务  
    mysqli::\_\_construct()   mysqli\_connect()    N/A 打开一个到Mysql服务端的新的连接[注意:静态方法]  
    mysqli->debug()  mysqli\_debug()  N/A 执行调试操作  
    mysqli->dump\_debug\_info()    mysqli\_dump\_debug\_info()    N/A 将调试信息转储到日志中  
    mysqli->get\_charset()    mysqli\_get\_charset()    N/A 返回对象的字符集  
    mysqli->get\_connection\_stats()   mysqli\_get\_connection\_stats()   N/A 返回客户端连接的统计信息。 仅可用于 mysqlnd。  
    mysqli->get\_client\_info()    mysqli\_get\_client\_info()    N/A 返回字符串描述的Mysql客户端版本  
    mysqli->get\_client\_stats()   mysqli\_get\_client\_stats()   N/A 返回每个客户端进程的统计信息。 仅可用于 mysqlnd。  
    mysqli->get\_cache\_stats()    mysqli\_get\_cache\_stats()    N/A 返回客户端的zval缓存统计信息。 仅可用于 mysqlnd。  
    mysqli->get\_server\_info()    mysqli\_get\_server\_info()    N/A 没有文档  
    mysqli->get\_warnings()   mysqli\_get\_warnings()   N/A 没有文档  
    mysqli::init()  mysqli\_init()   N/A 初始化mysqli并且返回一个由mysqli\_real\_connect使用的资源类型。[不是在对象上,是它返回的$mysqli对象]  
    mysqli->kill()   mysqli\_kill()   N/A 请求服务器杀死一个Mysql线程  
    mysqli->more\_results()   mysqli\_more\_results()   N/A 检查一个多语句查询是否还有其他查询结果集  
    mysqli->multi\_query()    mysqli\_multi\_query()    N/A 在数据库上执行一个多语句查询  
    mysqli->next\_result()    mysqli\_next\_result()    N/A 从multi\_query中准备下一个结果集  
    mysqli->options()    mysqli\_options()    mysqli\_set\_opt()    设置选项  
    mysqli->ping()   mysqli\_ping()   N/A ping一个服务器连接,或者如果那个连接断了尝试重连  
    mysqli->prepare()    mysqli\_prepare()    N/A 准备一个用于执行的SQL语句  
    mysqli->query()  mysqli\_query()  N/A 在数据库上执行一个查询  
    mysqli->real\_connect()   mysqli\_real\_connect()   N/A 打开一个到Mysql服务端的连接  
    mysqli->real\_escape\_string(), mysqli->escape\_string() mysqli\_real\_escape\_string() mysqli\_escape\_string()  转义字符串中用于SQL语句中的特殊字符,这个转换会考虑连接的当前字符集。  
    mysqli->real\_query() mysqli\_real\_query() N/A 执行一个SQL查询  
    mysqli->rollback()   mysqli\_rollback()   N/A 回滚当前事务  
    mysqli->select\_db()  mysqli\_select\_db()  N/A 为数据库查询选择默认数据库  
    mysqli->set\_charset()    mysqli\_set\_charset()    N/A 设置默认的客户端字符集  
    mysqli->set\_local\_infile\_default()   mysqli\_set\_local\_infile\_default()   N/A 清除用户为load data local infile命令定义的处理程序  
    mysqli->set\_local\_infile\_handler()   mysqli\_set\_local\_infile\_handler()   N/A 设置LOAD DATA LOCAL INFILE命令执行的回调函数  
    mysqli->ssl\_set()    mysqli\_ssl\_set()    N/A 使用SSL建立安装连接  
    mysqli->stat()   mysqli\_stat()   N/A 获取当前系统状态  
    mysqli->stmt\_init()  mysqli\_stmt\_init()  N/A 初始化一个语句并且返回一个mysqli\_stmt\_prepare使用的对象  
    mysqli->store\_result()   mysqli\_store\_result()   N/A 传输最后一个查询的结果集  
    mysqli->thread\_id()  mysqli\_thread\_id()  N/A 返回当前连接的线程ID  
    mysqli->thread\_safe()    mysqli\_thread\_safe()    N/A 返回是否设定了线程安全  
    mysqli->use\_result() mysqli\_use\_result() N/A 初始化一个结果集的取回  
\*/

/\*  
        MySQL\_STMT  
    面向对象接口  过程化接口   别名(不要使用)    描述  
    属性  
    $mysqli\_stmt->affected\_rows  mysqli\_stmt\_affected\_rows() N/A 返回最后一条倍执行的语句改变,删除或插入的总行数  
    $mysqli\_stmt->errno  mysqli\_stmt\_errno() N/A 返回最近一次语句调用的错误代码  
    $mysqli\_stmt->error  mysqli\_stmt\_error() N/A 返回最后一条语句错误的字符串描述  
    $mysqli\_stmt->field\_count    mysqli\_stmt\_field\_count()   N/A 返回给定语句得到的字段数量  
    $mysqli\_stmt->insert\_id  mysqli\_stmt\_insert\_id() N/A 获取前一个INSERT操作生成的ID  
    $mysqli\_stmt->num\_rows   mysqli\_stmt\_num\_rows()  N/A 返回语句结果集中的行数  
    $mysqli\_stmt->param\_count    mysqli\_stmt\_param\_count()   mysqli\_param\_count()    返回给定语句中参数数量  
    $mysqli\_stmt->sqlstate   mysqli\_stmt\_sqlstate()  N/A 返回前一个语句操作的SQLSTATE错误代码  
    方法  
    mysqli\_stmt->attr\_get()  mysqli\_stmt\_attr\_get()  N/A 用于获取语句属性的当前值  
    mysqli\_stmt->attr\_set()  mysqli\_stmt\_attr\_set()  N/A 用于修改prepared语句的行为  
    mysqli\_stmt->bind\_param()    mysqli\_stmt\_bind\_param()    mysqli\_bind\_param() 将一个变量作为参数绑定到prepared语句上  
    mysqli\_stmt->bind\_result()   mysqli\_stmt\_bind\_result()   mysqli\_bind\_result()    将一个变量绑定到一个prepared语句上用于结果存储  
    mysqli\_stmt->close() mysqli\_stmt\_close() N/A 关闭一个prepared语句  
    mysqli\_stmt->data\_seek() mysqli\_stmt\_data\_seek() N/A 查看语句结果集中的任意行  
    mysqli\_stmt->execute()   mysqli\_stmt\_execute()   mysqli\_execute()    执行一个prepared查询  
    mysqli\_stmt->fetch() mysqli\_stmt\_fetch() mysqli\_fetch()  从一个prepared语句中抓取结果到限定变量中  
    mysqli\_stmt->free\_result()   mysqli\_stmt\_free\_result()   N/A 释放给定语句处理存储的结果集所占内存  
    $mysqli\_stmt->get\_result()   mysqli\_stmt\_get\_result  N/A 没有文档 仅可用于 mysqlnd。  
    mysqli\_stmt->get\_warnings()  mysqli\_stmt\_get\_warnings()  N/A 没有文档  
    $mysqli\_stmt->more\_results() mysqli\_stmt\_more\_results()  N/A 没有文档 仅可用于 mysqlnd。  
    $mysqli\_stmt->next\_result()  mysqli\_stmt\_next\_result()   N/A 没有文档 仅可用于 mysqlnd。  
    mysqli\_stmt->num\_rows()  mysqli\_stmt\_num\_rows()  N/A 查阅属性$mysqli\_stmt->num\_rows  
    mysqli\_stmt->prepare()   mysqli\_stmt\_prepare()   N/A 准备一个SQL语句用于执行  
    mysqli\_stmt->reset() mysqli\_stmt\_reset() N/A 重置一个prepared语句  
    mysqli\_stmt->result\_metadata()   mysqli\_stmt\_result\_metadata()   mysqli\_get\_metadata()   从一个prepared语句返回结果集元数据  
    mysqli\_stmt->send\_long\_data()    mysqli\_stmt\_send\_long\_data()    mysqli\_send\_long\_data() 发送数据块  
    mysqli\_stmt->store\_result()  mysqli\_stmt\_store\_result()  N/A 从一个prepared语句中传输一个结果集

\*/

/\*  
        MySQLi\_RESULT  
    面向对象接口  过程化接口   别名(不要使用)    描述  
    属性  
    $mysqli\_result->current\_field    mysqli\_field\_tell() N/A 获取当前字段在结果集指针中的开始位置  
    $mysqli\_result->field\_count  mysqli\_num\_fields() N/A 获取结果中字段数量  
    $mysqli\_result->lengths  mysqli\_fetch\_lengths()  N/A 返回结果集中当前行的每列的值得长度,返回数组  
    $mysqli\_result->num\_rows mysqli\_num\_rows()   N/A 获取结果中行的数量  
    方法  
    mysqli\_result->data\_seek()   mysqli\_data\_seek()  N/A 将结果中的结果指针调整到任意行  
    mysqli\_result->fetch\_all()   mysqli\_fetch\_all()  N/A 抓取所有的结果行并且以关联数据,数值索引数组,或者两者皆有的方式返回结果集。仅可用于 mysqlnd。  
    mysqli\_result->fetch\_array() mysqli\_fetch\_array()    N/A 以一个关联数组,数值索引数组,或者两者皆有的方式抓取一行结果  
    mysqli\_result->fetch\_assoc() mysqli\_fetch\_assoc()    N/A 以一个关联数组方式抓取一行结果  
    mysqli\_result->fetch\_field\_direct()  mysqli\_fetch\_field\_direct() N/A 抓取一个单字段的元数据  
    mysqli\_result->fetch\_field() mysqli\_fetch\_field()    N/A 返回结果集中的下一个字段  
    mysqli\_result->fetch\_fields()    mysqli\_fetch\_fields()   N/A 返回一个代表结果集字段的对象数组  
    mysqli\_result->fetch\_object()    mysqli\_fetch\_object()   N/A 以一个对象的方式返回一个结果集中的当前行  
    mysqli\_result->fetch\_row()   mysqli\_fetch\_row()  N/A 以一个枚举数组方式返回一行结果  
    mysqli\_result->field\_seek()  mysqli\_field\_seek() N/A 设置结果指针到特定的字段开始位置  
    mysqli\_result->free(), mysqli\_result->close, mysqli\_result->free\_result    mysqli\_free\_result()    N/A 释放与一个结果集相关的内存  
\*/  
/\*注意 MYSQLI\_STORE\_RESULT和MYSQLI\_USE\_RESULT的区别  
 其实这两个参数的区别还是很大的。  
(1)区别在于从服务器上检索结果集的行。  
(2)MYSQLI\_USE\_RESULT 启动查询,但实际上并未获取任何行  
(3)MYSQLI\_STORE\_RESULT 立即检索所有的行  
(4)MYSQLI\_STORE\_RESULT 从服务器上检索结果集时,就提取了行,并为之分配内存,存储到客户机中,随后调用  
     mysqli\_fetch\_array()就再也不会返回错误,因为它仅仅是把行脱离了已经保留结果集的数据结 构,mysqli\_fetch\_array()返回 NULL始终表示已经到达结果集的末端。  
(5)MYSQLI\_USE\_RESULT 本身不检索任何行,而只是启动一个逐行的检索,就是说必须对每行调 用  
    mysqli\_fetch\_array()来自己完成。既然如此,虽然正常情况下,mysqli\_fetch\_array()返回NULL仍然表示此 时已到达结果集的末端,但也可能表示在与服务器通信时发生错误。

 如果是MYSQLI\_USE\_RESULT,query以后得到mysqli\_result对象后,执行data\_seek会出错,因为  
 mysqli\_result::data\_seek() \[mysqli-result.data-seek\]: Function cannot be used with MYSQL\_USE\_RESULT 

 与MYSQLI\_USE\_RESULT相比,MYSQLI\_STORE\_RESULT 有着较高的内存和处理需求,因为是在客户机上维护整个结果集,所以内存分配和创建数据结构的耗费是非常巨大的,如果想一次检索多个行,可用 MYSQLI\_USE\_RESULT。  
 MYSQLI\_USE\_RESULT有着较低的内存需求,因为只需给每次处理的单行分配足够的空间。这样速度就较快,因为不必为结果集建立复杂的数据结构。  
 另一方面,MYSQLI\_USE\_RESULT把较大的负载加到了服务器上,它必须保留结果集中的行,直到客户机看起来适合检索所有的行。  
\*/  

}

$dbHelper=new mysqliHelp;
$dbHelper->connect('localhost', 'root', '', 'tt');

//$dbHelper->db->select_db("tt");
//$dbHelper->db->set_charset("utf8");

//这里如果是MYSQLI_USE_RESULT,下面的$dbHelper->data_seek($query,10);就会出错
$query=$dbHelper->query("select id,cateid,title from product limit 22",MYSQLI_STORE_RESULT );
//$query=$dbHelper->query("update product set createtime=UNIX_TIMESTAMP() limit 22");

//$query=$dbHelper->query("insert into `product`(`cateid`,`title`,`text`,`createtime`) values (2,'test','content',1284822691)");
//$query=$dbHelper->query("delete from `product` where id=1");
//$query=$dbHelper->query("replace into product(id,cateid,title,text,createtime) values(1,2,'this is demo','test',UNIX_TIMESTAMP())");

echo $query->num_rows."总数";

//var_dump($query);

//$row=$dbHelper->fetch_array($query);

//var_dump($row);

//finfo = $dbHelper->fetch_fields($query);

//var_dump($finfo);
// foreach ($finfo as $val) {

// printf("Name:     %s\\n", $val->name);  
// printf("Table:    %s\\n", $val->table);  
// printf("max. Len: %d\\n", $val->max\_length);  
// printf("Flags:    %d\\n", $val->flags);  
// printf("Type:     %d\\n\\n", $val->type);  

// }

//如果是查询操作affected_rows行数为1,num_rows为查询结果行数,num_fields为字段数目
//如果是更新或者删除操作affected_rows为受影响的行数,num_rows为null,num_fields为null
//
$dbHelper->data_seek($query,);

$row=$dbHelper->fetch_row($query);

var_dump($row);

echo "影响行数:", "
";
var_dump($dbHelper->affected_rows());
//var_dump($dbHelper->db->affected_rows );

echo "查询行数","
";
var_dump($dbHelper->num_rows($query));
echo "列数:","
";
var_dump($dbHelper->num_fields($query));

//第1种
$sql="select id,cateid,title from product where cateid=? and title like ? and createtime<".time();

$stmt=$dbHelper->prepare($sql);

var_dump($stmt);
$stmt->bind_param('is',$cateid,$title);

$title="%%";
$cateid=;
$stmt->execute();
$stmt->bind_result($col1, $col2,$col3);

/* fetch values */
while ($stmt->fetch()) {
printf("%s %s"."
", $col1, $col3);
}

echo "
";
$title="%%";
$cateid=;
$stmt->execute();
$stmt->bind_result($col1, $col2,$col3);

/* fetch values */
while ($stmt->fetch()) {
printf("%s %s %s"."
", $col1, $col2,$col3);
}

$stmt->close();

//第2种

$stmt=$dbHelper->db->stmt_init();
$stmt->prepare($sql);
$stmt->bind_param('is',$cateid,$title);

$title="%%";
$cateid=;
$stmt->execute();
$stmt->bind_result($col1, $col2,$col3);

/* fetch values */
while ($stmt->fetch()) {
//printf("%s %s"."
", $col1, $col3);
}

echo "
开始multi_query:
";

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

$sql="select id,cateid,title from product where cateid=4;";
$sql.="select id,cateid,title from product where cateid=10";

$query=$dbHelper->db->multi_query($sql);

if($query)
{
do {
/* store first result set */
//下面两种方法有什么区别?
// if ($result = $dbHelper->db->store_result()) {
// while ($row = $result->fetch_row()) {
// $data[]=$row;
// }
// $result->free();
// }
if ($result = $dbHelper->db->use_result()) {//返回mysqli_result类型
//$result->data_seek(0);//返回bool
while ($row = $result->fetch_row()) {
$data[]=$row;
}
//$result->close();
}

    /\* print divider \*/  
    if ($dbHelper->db->more\_results()) {  
        printf("-----------------\\n");  
        $data\[\]="\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_";  
    }  
} while ($dbHelper->db->next\_result());

}
var_dump($data);
//exit;
//执行事务 实例
//确保操作的表时innodb类型的表
//如果是MyISAM,逻辑出错的话, 会执行所有操作,不回滚
$price=;
$success=true;
$dbHelper->db->autocommit();
$result=$dbHelper->query("update product set cateid=cateid-$price where id=1000" );
if(!$result || $dbHelper->affected_rows()!=)
{
$success=false;

}

$result=$dbHelper->query("update product set cateid=cateid+$price where id=2");
if(!$result || $dbHelper->affected_rows()!=)
{
$success=false;

}

if($success)
{
$dbHelper->db->commit();
echo "成功";

}else
{
$dbHelper->db->rollback();
echo "失败";

}
$dbHelper->db->autocommit();

//var_dump( $dbHelper->insert_id());
var_dump($mysql_debug_query); //打印sql查询信息

//
?>

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章