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的 查询方式
可以去看下手册