#1 jake

runSql(query) —— 执行SQL语句,相等于执行新增,修改,删除等操作。
请注意,原query函数,在SpeedPHP第三版开始,已经改名为runSql,以更好地和mysql_query函数区分开来。为了向下兼容,query函数仍然可用,不过强烈建议使用runSql函数。

请注意findSql和runSql函数之间的区别:findSql是SQL语句查找时使用的,而runSql(query)是SQL语句更新/删除/新建的时候使用的。也就是说,findSql中的SQL语句主要以“SELECT”为开头,而runSql中的SQL语句以“UPDATE/DELETE/CREATE”开头。



这里要注意,在直接使用SQL语句的时候,请注意需要使用表全名(前缀+表名),上例中的gb表全名为spgb_gb。

用法:runSql($sql)

参数:$sql,字符串,需要执行的SQL语句

例子:

在上一章的留言本数据中,我们已经增加了许多数据,数据表部分如下:

23 小李 晚上给我回复 2009-10-26 10:04:53 218.82.32.12

24 robot 广告留言 2009-11-11 10:04:53 218.13.23.12

25 robot  广告留言 2009-11-11 10:04:53 218.13.23.12

26 robot  广告留言 2009-11-13 10:04:53 218.13.23.12

27 大将军 广告留言 2009-11-14 10:04:53 218.82.32.12

28 大将军 广告留言 2009-11-14 10:04:53 218.82.32.12

29 小李 留言本很多广告留言 2009-11-14 10:04:53 218.82.32.12

// 这里我们将用SQL语句删除“留言者名称是大将军的留言,或IP来源于218.13.23.x的留言”。
// 首先准备SQL语句
$sql = "DELETE FROM spgb_gb WHERE 'name' = '大将军' OR 'post_ip' like '218.13.23.%' ";
$gb = spClass('gb'); // 初始化留言本模型类
$gb->runSql($sql); // 执行操作

返回:

返回TRUE则是语句执行成功,无论有无对数据表记录进行了操作,只要操作正常执行则返回TRUE。

返回FALSE是语句执行失败。

和update/delete/create等函数一样,runSql返回的结果,如无执行错误则返回TRUE。如果需要获取有无“真正”修改到数据,请使用affectedRows来获取“影响行数”。


2012-08-04 16:30:50