$haha = M(),$res = $haha->query($sql)。
或 $res = $waw->execute($sql)。
$sql中包含了表名,实例化模型时可以为空。注意query是查功能,execute是增删改功能。
结构化查询语言(Structured Query Language)简称SQL(发音:/ˈes kjuː ˈel/ "S-Q-L"),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。
结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统。
可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。
1986年10月,美国国家标准协会对SQL进行规范后,以此作为关系式数据库管理系统的标准语言(ANSI X3. 135-1986),1987年得到国际标准组织的支持下成为国际标准。不过各种通行的数据库系统在其实践过程中都对SQL规范作了某些编改和扩充。
所以,实际上不同数据库系统之间的SQL不能完全相互通用。
本篇文章是对使用PHP执行 SQL文件的实现代码进行了详细的分析介绍 需要的朋友参考下demo php:
复制代码 代码如下: <?php /** * 读取 sql 文件并写入数据库 * @version demo php */ class DBManager { var $dbHost = var $dbUser = var $dbPassword = var $dbSchema = function __construct($host $user $password $schema) { $this >dbHost = $host $this >dbUser = $user $this >dbPassword = $password $this >dbSchema = $schema } function createFromFile($sqlPath $delimiter = (/n)|((/r/n))|(/r) $prefix = $menter = array( # )) { //判断文件是否存在 if(!file_exists($sqlPath)) return false $handle = fopen($sqlPath rb ) $sqlStr = fread($handle filesize($sqlPath)) //通过sql语法的语句分割符进行分割 $segment = explode("" trim($sqlStr)) //var_dump($segment) //去掉注释和多余的空行 foreach($segment as &$statement) { $sentence = explode("/n" $statement) $newStatement = array() foreach($sentence as $subSentence) { if( != trim($subSentence)) { //判断是会否是注释 $isComment = false foreach($menter as $er) { if(eregi("^(" $er ")" trim($subSentence))) { $isComment = true break } } //如果不是注释 则认为是sql语句 if(!$isComment) $newStatement[] = $subSentence } } $statement = $newStatement } //对表名加前缀 if( != $prefix) { //只有表名在第一行出现时才有效 例如 CREATE TABLE talbeName $regxTable = "^[/`/ /"]{ }[/_a zA Z]+[/_a zA Z ]*[/`/ /"]{ }$"//处理表名的正则表达式 $regxLeftWall = "^[/`/ /"]{ }" $sqlFlagTree = array( "CREATE" =>array( "TABLE" =>array( "$regxTable" => ) ) "INSERT" =>array( "INTO" =>array( "$regxTable" => ) ) ) foreach($segment as &$statement) { $tokens = split(" " $statement[ ]) $tableName = array() $this >findTableName($sqlFlagTree $tokens $tableName) if(empty($tableName[ leftWall ])) { $newTableName = $prefix $tableName[ name ] } else{ $newTableName = $tableName[ leftWall ] $prefix substr($tableName[ name ] ) } $statement[ ] = str_replace($tableName[ name ] $newTableName $statement[ ]) } } //组合sql语句 foreach($segment as &$statement) { $newStmt = foreach($statement as $sentence) { $newStmt = $newStmt trim($sentence) "/n" } $statement = $newStmt } //用于测试 //var_dump($segment) //writeArrayToFile( data txt $segment) // self::saveByQuery($segment) return true } private function saveByQuery($sqlArray) { $conn = mysql_connect($this >dbHost $this >dbUser $this >dbPassword) mysql_select_db($this >dbSchema) foreach($sqlArray as $sql) { mysql_query($sql) } mysql_close($conn) } private function findTableName($sqlFlagTree $tokens $tokensKey= &$tableName = array()) { $regxLeftWall = "^[/`/ /"]{ }" if(count($tokens)<=$tokensKey) return false if( == trim($tokens[$tokensKey])) { return self::findTableName($sqlFlagTree $tokens $tokensKey+ $tableName) } else { foreach($sqlFlagTree as $flag =>$v) { if(eregi($flag $tokens[$tokensKey])) { if( ==$v) { $tableName[ name ] = $tokens[$tokensKey] if(eregi($regxLeftWall $tableName[ name ])) { $tableName[ leftWall ] = $tableName[ name ]{ } } return true } else{ return self::findTableName($v $tokens $tokensKey+ &$tableName) } } } } return false } } function writeArrayToFile($fileName $dataArray $delimiter="/r/n") { $handle=fopen($fileName "wb") $text = foreach($dataArray as $data) { $text = $text $data $delimiter } fwrite($handle $text)} //测试 $dbM = new DBManager( localhost w f test )$dbM >createFromFile( data sql null fff_ )?>lishixinzhi/Article/program/PHP/201311/21281下次要是没把握时,先启动一个事务
象这样
begin
transaction
--启动一个事务
update
tablename
set
xxxxx
where
xxxx
select
*
from
tablename
--查看结果
--如果发现有问题就执行这个语句:
rollback
transaction
--没问题就迅速执行这个语句:
commit
transaction
这些都要先写好了,执行完成后要迅速执行事务提交或回滚语句。
以免启动事务影响其它人对更改过的表的访问。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)