Php Fix mysql_num_rows()希望参数1是资源
当我尝试将mysql数据带到表中时,getPhp Fix mysql_num_rows()希望参数1是资源,php,html,mysql,mysqli,Php,Html,Mysql,Mysqli,当我尝试将mysql数据带到表中时,getmysql\u num\u rows()希望参数1是resource。编码有什么问题?是否正确使用了mysql和mysqli?错误是针对行$num=mysql\u num\u行($result)。我很确定问题出在$result上,但我不知道如何解决它 <?php $connection=mysqli_connect("localhost"/*hostname*/, "username"
mysql\u num\u rows()希望参数1是resource
。编码有什么问题?是否正确使用了mysql和mysqli?错误是针对行$num=mysql\u num\u行($result)代码>。我很确定问题出在$result上,但我不知道如何解决它
<?php
$connection=mysqli_connect("localhost"/*hostname*/,
"username"/*username*/,
"password"/*password*/,
"dbname"/*database name*/);
$query = "SELECT * FROM table";
$result = mysqli_query($query);
$num = mysqli_num_rows($result);
mysqli_close();
$i=0;
while ($i < $num) {
$f1=mysqli_result($result,$i,"rowa");
$f2=mysqli_result($result,$i,"rowb");
$f3=mysqli_result($result,$i,"rowc");
$f4=mysqli_result($result,$i,"rowd");
$f5=mysqli_result($result,$i,"rowe"); ?>
<table>
<tr>
<td>a</td>
<td>b</td>
<td>c</td>
<td>d</td>
<td>e</td>
</tr>
<tr>
<td>
<font face="Arial, Helvetica, sans-serif"><?php echo $f1; ?></font>
</td>
<td>
<font face="Arial, Helvetica, sans-serif"><?php echo $f2; ?></font>
</td>
<td>
<font face="Arial, Helvetica, sans-serif"><?php echo $f3; ?></font>
</td>
<td>
<font face="Arial, Helvetica, sans-serif"><?php echo $f4; ?></font>
</td>
<td>
<font face="Arial, Helvetica, sans-serif"><?php echo $f5; ?></font>
</td> </tr>
</table>
<?php } ?>
A.
B
C
D
E
用户名、密码、数据库和表名不是代码中使用的实际名称。您混合了mysql和mysqli函数
将您的连接函数替换为mysql\u connect()
甚至更好的是,由于mysql_uu函数已被弃用,请尝试将所有内容更改为mysqli
或使用PDO
这是一个简单的修复方法:仔细查看第一行:
mysqli_connect();
应该使用mysqli.*
扩展,但随后您可以调用各种不推荐的mysql.*
函数。只需将这些调用更改为更现代的、非弃用的mysqli.*
对应调用即可
其他问题包括您呼叫mysqli\u close的时间太短(在您关闭连接后,您仍试图处理数据库结果)。
您甚至没有正确调用mysqli\u close
:该函数要求您将db连接作为参数传递:
mysqli_close($connection);
花点时间
关于其他问题:在MySQL中,查询使用了一个保留关键字:table
,应该转义:
$result = mysqli_query(
$connection,//pass mysqli connection as first param
'SELECT * FROM `table`'
);
if (!$result)
exit('Query failed');//ALWAYS CHECK RETURN VALUES!!
$count = mysqli_num_rows($result);
//and so on
此错误意味着您的查询失败,因为您混合了mysql_*和mysqli_*
试试这个:
$connection=mysqli_connect("localhost"/*hostname*/,
"username"/*username*/,
"password"/*password*/,
"dbname"/*database name*/);
$query = "SELECT * FROM table";
$result = mysqli_query($connection,$query);
$num = mysqli_num_rows($result);
更改:
$result = mysqli_query($query);
致:
我希望这将修复您的错误。通过确保您具有有效的数据库连接,并且您的查询语句正确无误,可以修复的可能重复。注意:表是保留字。用回帖把它围起来。我并没有费那么大的劲帮你贴一个答案,让你回来再贴一个。您基本上重复发布了相同的问题。“错误出现在$num=mysql_num_rows($result);”代码体中没有。您有$num=mysqli\u num\u行($result)代码>WTF?糟糕的建议!使用mysqli\u connect
是唯一应该保持原样的东西。不要用不推荐的坏版本替换好代码@EliasVanOotegem我正在编辑我的答案!!如果在我发布评论时你正在编辑它,我当然看不到。你不必大喊大叫。此外:您仍然建议更改mysqli\u connect
。当然,你说最好不要这样做,但不要告诉人们他们仍然可以使用mysql\u*
函数,因为扩展必须终止mysqli\u结果
是否正确。感谢您提供手册的链接。为什么我看过的网站都没有链接到这一点。@TheOkayMan:我当然知道如何解决这个问题。我链接到了mysqli.*
的手册,只需查看文档:传递给该函数的第一个参数是一个资源(mysqli_query
的返回值是一个mysqli_result
对象,这是您需要传递的)
$result = mysqli_query($connection, $query);