phpnewsql的简单介绍
华为云服务器特价优惠火热进行中! 2核2G2兆仅需 38 元;4核4G3兆仅需 79 元。购买时间越长越优惠!更多配置及优惠价格请咨询客服。
合作流程: |
本篇文章给大家谈谈phpnewsql,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
微信号:cloud7591如需了解更多,欢迎添加客服微信咨询。
复制微信号
本文目录一览:
谁知道php使用sqlite3是用 new PDO 呢,,还是用 new SQLlite3 这个呢
两者都可以,都需要开启php的对应扩展。
用PDO可以使代码适用于多种数据库,使得代码抽象化,脱宏弯离数据库关联。
用指定SQLite3后,代裂滑码只能用于这种数据库。
尽量肆绝腊用PDO。
如何利用PHP执行.SQL文件
代码如下:
?php
class DBManager
{
var $dbHost = '';
var $dbUser = '';
var $dbPassword = '';
var $dbSchema = '';
var $conn;
function __construct($host,$user,$password,$schema)
{
$this-dbHost = $host;
$this-dbUser = $user;
$this-dbPassword = $password;
$this-dbSchema = $schema;
}
public function executeFromString($sql,$delimiter = '(;\n)|((;\r\n))|(;\r)',$prefix = '',$commenter = array('#','--'))
{
return $this-execute($sql,$delimiter,$prefix ,$commenter);
}
public function executeFromFile($sqlPath,$delimiter = '(;\n)|((;\r\n))|(;\r)',$prefix = '',$commenter = array('#','--'))
{
//判断文件是否存在
if(!file_exists($sqlPath))return false;
$handle = fopen($sqlPath,'rb');
$sqlStr = fread($handle,filesize($sqlPath));
fclose($handle);
return $this-execute($sqlStr,$delimiter,$prefix ,$commenter);
}
protected function execute($sqlStr,$delimiter = '(;\n)|((;\r\n))|(;\r)',$prefix = '',$commenter = array('#','--'))
{
//通过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($commenter as $comer):
if(eregi("^(".$comer.")",trim($subSentence))):
$isComment = true;
break;
endif;
endforeach;
//如果不是注释,则认为是sql语句
笑竖陆 if(!$isComment)
纤轮 $newStatement[] = $subSentence;
endif;
endforeach;
$statement = $newStatement;
endforeach;
//对表名加前缀
if('' != $prefix)://只有表名在第一行出现时才有效 例如 CREATE TABLE 碰顷talbeName
$regxTable = "^[\`\'\"]{0,1}[\_a-zA-Z]+[\_a-zA-Z0-9]*[\`\'\"]{0,1}$";//处理表名的正则表达式
$regxLeftWall = "^[\`\'\"]{1}";
$sqlFlagTree = array
(
"CREATE" = array("TABLE" = array("$regxTable" = 0)),
"INSERT" = array("INTO" = array("$regxTable" = 0))
);
foreach($segment as $statement):
$tokens = split(" ",$statement[0]);
$tableName = array();
$this-findTableName($sqlFlagTree,$tokens,0,$tableName);
if(emptyempty($tableName['leftWall'])):
$newTableName = $prefix.$tableName['name'];
else:
$newTableName = $tableName['leftWall'].$prefix.substr($tableName['name'],1);
endif;
$statement[0] = str_replace($tableName['name'],$newTableName,$statement[0]);
endforeach;
endif;
//组合sql语句
foreach($segment as $statement):
$newStmt = '';
foreach($statement as $sentence):
$newStmt = $newStmt.trim($sentence)."\n";
endforeach;
$statement = $newStmt;
endforeach;
self::saveByQuery($segment);
return true;
}
private function saveByQuery($sqlArray)
{
$this-conn = mysql_connect($this-dbHost,$this-dbUser,$this-dbPassword);
mysql_select_db($this-dbSchema,$this-conn);
foreach($sqlArray as $sql):
mysql_query($sql,$this-conn);
endforeach;
}
public function close()
{
mysql_close($this-conn);
}
private function findTableName($sqlFlagTree,$tokens,$tokensKey=0,$tableName = array())
{
$regxLeftWall = "^[\`\'\"]{1}";
if(count($tokens)=$tokensKey)
return false;
if('' == trim($tokens[$tokensKey])):
return self::findTableName($sqlFlagTree,$tokens,$tokensKey+1,$tableName);
else:
foreach($sqlFlagTree as $flag = $v):
if(eregi($flag,$tokens[$tokensKey])):
if(0==$v):
$tableName['name'] = $tokens[$tokensKey];
if(eregi($regxLeftWall,$tableName['name'])):
$tableName['leftWall'] = $tableName['name']{0};
endif;
return true;
else:
return self::findTableName($v,$tokens,$tokensKey+1,$tableName);
endif;
endif;
endforeach;
endif;
return false;
}
}

php执行SQL语句的时候,如何使用自定义的函数
你直接将jiami设置为变量,然后写为塌做:
jiami=password;这里写具体戚衫掘的加密。
$sql="update 高核new.`user` set `password`=‘jiami’";
phpnewsql的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、phpnewsql的信息别忘了在本站进行查找喔。
