你的位置:
问答吧
-> PHP基础
-> 问题详情
php+mysql instr()问题
我的SQL语句是这样写的:SQL code
SelectID,ParentsID,ProName,ProSImg,SImgAlt,HtmlUrlFromProductsInfowhereIsShow=Trueandinstr(','ParentsID_r',',',".$_REQUEST["list"].",')>0OrderByToSortdesc
整个代码是这样的PHP code
<?php $str="Select ID,ParentsID,ProName,ProSImg,SImgAlt,HtmlUrl From ProductsInfo where IsShow=True and instr(','ParentsID_r',',',".$_REQUEST["list"].",')>0 Order By ToSort desc";$result=mysql_query($str,$link);$num=mysql_num_rows($result);for($i=0;$i
{$row=msql_fetch_array($result);echo$row["ProName"];
}?>
可是为什么上面传过来的sql语句却查不到值呢,页面上什么也不显示为空白,调试也不报错。请大家帮我看看是哪里出错了。
作者: ruiandli
发布时间: 2010-09-21
没有人知道吗,自己帮顶下。知道的请回复下。
作者: ruiandli
发布时间: 2010-09-21
IsShow的类型如果是字符串要加引号
作者: kyzy_yy_pm
发布时间: 2010-09-21
IsShow的类型不是字符型的,我现在知道是instr(','ParentsID_r',',',".$_REQUEST["list"].",')>0这里错了,但不知道怎么改。
作者: ruiandli
发布时间: 2010-09-21
$s = "Select ID,ParentsID,ProName,ProSImg,SImgAlt,HtmlUrl From ProductsInfo where IsShow='True' and instr(',ParentsID_r,',',".$_REQUEST["list"].",')>0 Order By ToSort desc";
作者: kyzy_yy_pm
发布时间: 2010-09-21
instr(','ParentsID_r',',',".$_REQUEST["list"].",') ???
你这样写对吗?
instr 只有两个参数,返回第一个参数在第二个中第一次出现的位置
作者: xuzuning
发布时间: 2010-09-21
引用 5 楼 xuzuning 的回复:
instr(','ParentsID_r',',',".$_REQUEST["list"].",') ???
你这样写对吗?
instr 只有两个参数,返回第一个参数在第二个中第一次出现的位置
不行。
作者: ruiandli
发布时间: 2010-09-21
引用 4 楼 kyzy_yy_pm 的回复:
$s = "Select ID,ParentsID,ProName,ProSImg,SImgAlt,HtmlUrl From ProductsInfo where IsShow='True' and instr(',ParentsID_r,',',".$_REQUEST["list"].",')>0 Order By ToSort desc";
用你我也试过了,我把条件都满足了在mysql数据库里动行时显示都为空
作者: ruiandli
发布时间: 2010-09-21
我的ParentsID_r字段里的值为[2,21],$REQUEST["list"]的值为21,可是为什么查询出来的值为空呢?
作者: ruiandli
发布时间: 2010-09-21
条件是你给的,明显的你给的条件格式不正确,明明是[2,21],楼主却非要给个,***,的格式的,所以查不出来
[2,21],这个就是这样的么?这也没有规律啊
作者: kyzy_yy_pm
发布时间: 2010-09-21
ParentsID_r字段里的值是2,21。我用个[]括起来是为方便大家看。并没有中括号。
作者: ruiandli
发布时间: 2010-09-21
哪位大哥大姐帮忙解决下,小弟不胜感激。
作者: ruiandli
发布时间: 2010-09-21
$s = "Select ID,ParentsID,ProName,ProSImg,SImgAlt,HtmlUrl From ProductsInfo where IsShow='True' and instr('ParentsID_r','" . $_REQUEST["list"] . "')>0 Order By ToSort desc";
你这样试试,我没看懂为什么你有那么多逗号和单引
作者: ycscholes
发布时间: 2010-09-21
我的ParentsID_r字段里的值为[2,21],$REQUEST["list"]的值为21
$REQUEST["list"] 在 ParentsID_r 中第一次出现的位置
应写作
instr(ParentsID_r, '$_REQUEST["list"]')
整句应写作
$str = "Select ID,ParentsID,ProName,ProSImg,SImgAlt,HtmlUrl From ProductsInfo where IsShow=True and instr(ParentsID_r, '$_REQUEST[list]')>0 Order By ToSort desc";
作者: xuzuning
发布时间: 2010-09-21
$s = "Select ID,ParentsID,ProName,ProSImg,SImgAlt,HtmlUrl From ProductsInfo where IsShow='True' and instr(',ParentsID_r,',',".$_REQUEST["list"].",')>0 Order By ToSort desc";
你的意思是不是后面一个参数是 ,"21",如果是这样的话 是你拼接字符串的问题吧
应该是instr(',ParentsID_r,',',\"'.$_REQUEST["list"].'\",') 而且mysql中的双引号貌似也要转义
你这个东西太麻烦了 我没测试 你多测试测试就好了 关键你这里的符号太多了
作者: sunwenhao0421
发布时间: 2010-09-21