1. php 查詢 sql 資料庫 提取文章關鍵詞
$res=mysql_query("select
*
from
keyword");//查找所有關鍵詞
while($row
=
mysql_fetch_array($rec)){//一次判斷,文章中有沒有出現該關鍵詞
$str
=
$row['name'];
$rec
=
mysql_query("select
*
from
文章表
where
$title
like
'%$str%'
or
$content
like
'%$str%'");//模糊查詢文章標題和內容中出現了的該關鍵詞的數據
$num
=
mysql_num_rows($rec);//文章標題和內容中出現了的該關鍵詞的文章條數
if($num){
echo
$str;
}
}
2. php sql 日期相等怎麼判斷
//
如果資料庫保存的時間格式為
年-月-日
$date
=
date('Y-m-d',time());
//
第二個參數可以不傳,默認當前時間戳,輸出2015-9-16
$sql
=
"SELECT
*
FROM
TABLE
WHERE
TIME
=
'{$date}'";
//
完全匹配時間
//
如果資料庫保存的時間格式為
年-月-日
時:分:秒
$sql
=
"SELECT
*
FROM
TABLE
WHERE
TIME
like
'{$date}%'";
//
模糊匹配
年-月-日
相等的時間,後面的
時分秒
忽略,只要年月日匹配就能查出來
3. php防止sql注入示例分析和幾種常見攻擊正則
functioncustomError($errno,$errstr,$errfile,$errline)
{
echo"Errornumber:[$errno],erroronline$errlinein$errfile
";
die();
}
set_error_handler("customError",E_ERROR);
$getfilter="'|(and|or)\b.+?(>|<|=|in|like)|\/\*.+?\*\/|<\s*script\b|\bEXEC\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\s+(TABLE|DATABASE)";
$postfilter="\b(and|or)\b.{1,6}?(=|>|<|\bin\b|\blike\b)|\/\*.+?\*\/|<\s*script\b|\bEXEC\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\s+(TABLE|DATABASE)";
$cookiefilter="\b(and|or)\b.{1,6}?(=|>|<|\bin\b|\blike\b)|\/\*.+?\*\/|<\s*script\b|\bEXEC\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\s+(TABLE|DATABASE)";
functionStopAttack($StrFiltKey,$StrFiltValue,$ArrFiltReq)
{
if(is_array($StrFiltValue))
{
$StrFiltValue=implode($StrFiltValue);
}
if(preg_match("/".$ArrFiltReq."/is",$StrFiltValue)==1&&!isset($_REQUEST['securityToken']))
{
slog("
操作IP:".$_SERVER["REMOTE_ADDR"]."
操作時間:".strftime("%Y-%m-%d%H:%M:%S")."
操作頁面:".$_SERVER["PHP_SELF"]."
提交方式:".$_SERVER["REQUEST_METHOD"]."
提交參數:".$StrFiltKey."
提交數據:".$StrFiltValue);
print"resultnotice:Illegaloperation!";
exit();
}
}
foreach($_GETas$key=>$value)
{
StopAttack($key,$value,$getfilter);
}
foreach($_POSTas$key=>$value)
{
StopAttack($key,$value,$postfilter);
}
foreach($_COOKIEas$key=>$value)
{
StopAttack($key,$value,$cookiefilter);
}
functionslog($logs)
{
$toppath="log.htm";
$Ts=fopen($toppath,"a+");
fputs($Ts,$logs." ");
fclose($Ts);
}
?>
4. php SQL語句有and也有or應該怎麼處理呢
用小括弧()包含就可以區別開。
例如:
select * from table where title like '%hello%' and (contents like '%good%' or contents like '%ok%')
sql語句where部分解釋如下:
title like '%hello%' and (contents like '%good%' or contents like '%ok%')
title 欄位模糊查詢包含 hello 字元串的數據,並且 contents 欄位模糊查詢包含 good 字元串的數據,或者contents 欄位模糊查詢包含 ok 字元串的數據
比如數據表數據如下:
欄位 id --- title --- contents
數據 1 --- 11hello22 --- yougoodss
2 --- aaahello333 --- fdffokssfff
3 --- bbbhello666 ---- fffaafdafa1
像上面的數據sql語句會同時查詢出1、2的數據。
就像四則運算加上小括弧就有了計算優先原則。
5. PHP執行SQL並將返回數據顯示到網頁上為什麼漢字會變成問號
是字元編碼問題
mysql字元編碼有四個級別 伺服器級,資料庫級,表級,欄位級.前三種均為默認設置,並不代表你的欄位最終會使用這三種之一字元集設置,以欄位級為准。
從資料庫中查詢數據並輸出顯示也有主要三個地方,一個就是上面所說的,二是連接字元集使用例如mysql_query('set name gbk')的語句設定,三是腳本字元集(php腳本的編碼),另外有網頁編碼字元集。
這些編碼應該一致,尤其是連接字元集與欄位字元集。
可使用 show variables like 'character%'; 來查看相關字元集設定
例如欄位字元集為utf-8 ,連接字元集為utf-8 ,php腳本為utf-8編碼 ,網頁charset為 utf-8
6. php+mysql+like+通配符+變數
三種方法:
【一】像你這種aa前後都是特殊字元,而且最外側是雙引號的可以直接寫變數名
$result=mysql_query("SELECT*FROMtable1WHEREnameLIKE'%$var%'");
【二】也可以使用點連接符對字元串進行連接:
$result=mysql_query("SELECT*FROMtable1WHEREnameLIKE'%".$var."%'");
【三】可以使用{}代碼域來分隔變數名,這種用法更適用於變數後有數字、字母、下劃線的情況,它可以明確地將變數與字元串區分開來:
$result=mysql_query("SELECT*FROMtable1WHEREnameLIKE'%{$var}%'");
7. php sql 日期相等怎麼判斷
// 如果資料庫保存的時間格式為 年-月-日
$date = date('Y-m-d',time()); // 第二個參數可以不傳,默認當前時間戳,輸出2015-9-16
$sql = "SELECT * FROM TABLE WHERE TIME = '{$date}'"; // 完全匹配時間
// 如果資料庫保存的時間格式為 年-月-日 時:分:秒
$sql = "SELECT * FROM TABLE WHERE TIME like '{$date}%'"; // 模糊匹配 年-月-日 相等的時間,後面的 時分秒 忽略,只要年月日匹配就能查出來
8. PHP如何實現模糊搜索
mysql支持自然語言的全文搜索
對於欄位的要求:
只能是CHAR, VARCHAR, 或 TEXT 類型的欄位
表類型是MyISAM
在表建好,並導入數據後,建立一個fulltext index(索引)
用法:
select 欄位1,欄位2,欄位3, MATCH(要匹配的欄位名) AGAINST('keyword') as score from table having score>0
命中的每一行都會有個分數,分數越大表示結果越接近keyword,分數越低的就是越模糊的結果
9. 請問sql查詢語句怎麼轉換成php tp框架的查詢表達式
Db::name('think_user')->where('id',1)->find();
帶表前綴的查詢
Db::name('user')->where('id',1)->find();
不帶表前綴的查詢,
這是TP5的 查詢方式
可以去看下手冊