PHP表连接查询:Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in
$query="select message.id as id,message.title as title,message.content as content,";
$query.="message.ctime as ctime,admin.name as name from message,admin where message.sid=admin.id";
$query.=" order by message.id desc";
$result=mysql_query($query);
执行上面这段代码为何总是取不到数据,且报错:Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in
这个问题我后来解决了,是因为我有个字段没对应上。但是现在是另一段操作数据库的语句出现这样的问题,代码如下:
$query="select survey.*,admin.realname as realname from survey,admin";
$query.=" where survey.tid=admin.tid and survey.sid='$sid' order by survey.id desc";
$result=mysql_query($query);我想问这段代码有没语法错误,其实相同代码有其他人运行成功的,但我这不行。是不是存在缺乏动态链接库之类的问题呢?是不是有些版本不支持这种写法? 展开
上面的程序代码改为:
<table align=center width=800 border=1>
<tr>
<td>产品编号</td>
<td>产品分类</td>
<td>产品货号</td>
</tr>
<?
$sql = "select 产品.pid,分类表.sname,产品.name from 产品,分类表 where 产品.sort=分类表.sid order by 产品.pid"
$rst = @new COM("ADODB.RecordSet")
$rst->Open($sql,$con,1,3)
while(!$rst ->EOF){?><td><?=$rst->Fields["pid"]->Value?></td>
<td><?=$rst->Fields["sname"]->Value?></td>
<td><?=$rst->Fields["name"]->Value?></td>
</tr><?
$rst->Movenext();}
$con->close();?>
</table>
通过php判断某个用户是否存在的代码如下:
//拆分发来的信息得到会员卡号<br data-filtered="filtered">
$arry=explode("+",$form_Content);<br data-filtered="filtered">
$memberid =$arry[1];<br data-filtered="filtered">
<br data-filtered="filtered">
//连接数据库<br data-filtered="filtered">
$link=mysql_connect(SAE_MYSQL_HOST_M.':'.SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS);<br data-filtered="filtered">
if($link) {<br data-filtered="filtered">
mysql_select_db(SAE_MYSQL_DB,$link); <br data-filtered="filtered">
//查询数据<br data-filtered="filtered">
$result1=mysql_query("select * from numbers where pmcode = '".$memberid."';");<br data-filtered="filtered">
<br data-filtered="filtered">
$num_result = mysql_num_rows($result1);<br data-filtered="filtered">
if($num_result==1){<br data-filtered="filtered">
//$row= $result1->fetch_assoc();<br data-filtered="filtered">
$row=mysql_fetch_row($result1);<br data-filtered="filtered">
$result_str="您的会员--信息如下:\n\n卡号:$row[pmcode].\n姓名:.$row[names].\n等级:.$row[4].\n积分:$a[5]";<br data-filtered="filtered">
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType,$result_str); <br data-filtered="filtered">
echo $resultStr
<br data-filtered="filtered">
exit;<br data-filtered="filtered">}else{<br data-filtered="filtered">
$msgType = "text";<br data-filtered="filtered">
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType,"--select * from numbers where pmcode = '".$memberid."'"); <br data-filtered="filtered">
echo $resultStr
<br data-filtered="filtered">
exit;<br data-filtered="filtered">
<br data-filtered="filtered">}<br data-filtered="filtered">
<br data-filtered="filtered">}
else{<br data-filtered="filtered">
echo "连接数据库失败".mysql_error;<br data-filtered="filtered">}
<br data-filtered="filtered">
mysql_close($link);<br data-filtered="filtered">}
可能的原因是admin是mysql的关键字。 在sql语句的admin两边加上`这个符号,就是tab键上面,esc键下面那个键。 如果还有问题的话,请继续追问,我很乐意帮你解决这个问题。
这个问题我后来解决了,是因为我有个字段没对应上。但是现在是另一段操作数据库的语句出现这样的问题,代码在问题补充那里
php对mysql模块的支持是默认的,如果你php能够正常运行的话,应该不存在缺乏动态链接库的问题。也没有听说是版本问题,你可以写的更加严谨试一试,就是讲表名和字段名用反撇号`括起来,值用单引号'括起来。然后输出$query,在navicat或者phpmyadmin上执行语句。
如果在你的mysql能够执行成功,那么在php上应该也是可以的。
如果上执行不成功,那就再仔细检查下sql语句。
当然还存在一些非常特别的情况,比如说你这两张表的数据都非常非常大,而你的服务器配置不够,php的执行最长时间也比较短,那么也可能出现执行中止的情况。 因为你这句sql语句的性能确实很低,建议写为join 语句。例如
SELECT s.*,a.realname realname FROM `survey` s LEFT JOIN `admin` a ON s.tid = a.tid WHERE s.sid='$sid' ORDER BY s.id DESC
广告 您可能关注的内容 |