佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1134|回复: 6

遇到解决不了的问题。

[复制链接]
发表于 13-10-2014 10:25 AM | 显示全部楼层 |阅读模式
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\demoweb\demo.php on line 29
这是什么意思呢?有大大可以教下吗?
回复

使用道具 举报


ADVERTISEMENT

发表于 13-10-2014 01:42 PM | 显示全部楼层
回复

使用道具 举报

发表于 13-10-2014 10:11 PM | 显示全部楼层
老兄,
做為, 初學者.
可以, 將勤補拙

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\demoweb\demo.php on line 29

告訴 了你, 第29 行出問題 .
你可以把你的第1 到 第29 行搬出來
反正大家看得懂的, 又想回答你的, 都會回答你.

或是像以上, 這位仁兄, 叫你去找GOOGLE , 就找到答案了.

你代碼, 目前是沒有人會抄你的, 放心.
第29 行也不是很多東東.

如果, 你第一行的英文, 不懂是說什麼,
你可以用中国的  百度, 來搜一下
回复

使用道具 举报

 楼主| 发表于 14-10-2014 10:43 AM | 显示全部楼层
GoodMorning 发表于 13-10-2014 10:11 PM
老兄,
做為, 初學者.
可以, 將勤補拙

<?php include( "./inc/header.inc.php" );?>
<?php
$reg = @$_POST['reg'];
//declaring variables to prevent errors
$fn = ""; //First Name
$ln = ""; //Last Name
$un = ""; //Username
$em = ""; //Email
$em2 = ""; //Email 2
$pswd = ""; //Password
$pswd2 = ""; // Password 2
$d = ""; // Sign up Date
$u_check = ""; // Check if username exists
//registration form
$fn = strip_tags(@$_POST['fname']);
$ln = strip_tags(@$_POST['lname']);
$un = strip_tags(@$_POST['username']);
$em = strip_tags(@$_POST['email']);
$em2 = strip_tags(@$_POST['email2']);
$pswd = strip_tags(@$_POST['password']);
$pswd2 = strip_tags(@$_POST['password2']);
$d = date("Y-m-d"); // Year - Month - Day

if ($reg) {
if ($em==$em2) {
// Check if user already exists
$u_check = mysql_query("SELECT username FROM users WHERE username='$un'");
// Count the amount of rows where username = $un
$check = mysql_num_rows($u_check);

回复

使用道具 举报

发表于 14-10-2014 11:33 AM | 显示全部楼层
唉, 你真的, 就是代碼貼上, 找都不找答案

那我給你多一個代碼
你看你少了什麼

<?php
$con = mysql_connect("localhost", "peter", "abc123");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

$db_selected = mysql_select_db("test_db",$con);

$sql = "SELECT * FROM person";
$result = mysql_query($sql,$con);
echo mysql_num_rows($result);

mysql_close($con);
?>

www.w3schools.com/php/func_mysql_num_rows.asp
自己去分別一下.
我當初做的時候, 也多希望有一個人給我一個正確 的範例.

回复

使用道具 举报

发表于 17-10-2014 02:07 AM | 显示全部楼层
学php有几个重点,重点明白之后就好像打通“任督二脉”一样什么都可以自己摸索了,只是时间的问题

第一要懂用
  1. exit(var_dump($u_check));
复制代码
如果数据太多就
  1. echo '<pre>';
  2. exit(var_dump($u_check));
复制代码
第二要尝试了解你dump了什么出来,本来应该是什么,现在为什么是这样

第三要了解 什么是 function

第四要了解 什么是 class

这四个懂了之后就出现什么error都可以慢慢找出原因了,当然懂了这4样基本中的基本就慢慢学更多进阶的东西咯 本帖最后由 vronn12345 于 17-10-2014 02:08 AM 编辑

评分

参与人数 2人气 +10 收起 理由
k2levin + 5 谢谢分享
hui_wooi + 5 精品文章

查看全部评分

回复

使用道具 举报

Follow Us
发表于 17-10-2014 09:46 AM | 显示全部楼层
  1. Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\demoweb\demo.php on line 29
复制代码
这行的意思是, 你在第29行, 也就是
  1. $check = mysql_num_rows($u_check);
复制代码
出现了问题

具体的问题是, 你的 $u_check里面是boolen值, 而执行mysql_num_rows() 传进去的变数必须是 resource

也就是说你在执行这行的时候
  1. $u_check = mysql_query("SELECT username FROM users WHERE username='$un'");
复制代码
就已经出现错误

有两个可能,
1) 你的select 语法读回来是空值,
2) 你的select 语法错误了

具体要怎样处理?

  1. // Check if user already exists
  2. $u_check = mysql_query("SELECT username FROM users WHERE username='$un'");
  3. // Count the amount of rows where username = $un
  4. $check = mysql_num_rows($u_check);
复制代码
修改成

  1. // Check if user already exists
  2. unset($SQL,$u_check);

  3. //Set the sql querry
  4. $SQL="SELECT username FROM users WHERE username='$un'";

  5. //test and debug use
  6. echo $SQL;

  7. //run the query
  8. $u_check = mysql_query($SQL);

  9. // Count the amount of rows where username = $un
  10. $check = mysql_num_rows($u_check);
复制代码
这样你执行的过程中, 会把你的query output 出来, 你在output 出来的query copy 下来,在贴到 phpmyadmin/navicat/mysqlgui 这类的db 界面去执行看下什么结果.

如果是第2个问题(语法错误), 根据db 给你的指示进行修改.

如果是第一个问题(回传空值), 你的程式就要改成这样

  1. // Check if user already exists
  2. unset($SQL,$u_check);

  3. //Set the sql querry
  4. $SQL="SELECT username FROM users WHERE username='$un'";

  5. //test and debug use
  6. echo $SQL;

  7. //run the query
  8. $u_check = mysql_query($SQL);

  9. // Count the amount of rows where username = $un
  10. if(is_rerousce($u_check))
  11. {
  12.   $check = mysql_num_rows($u_check);
  13. }
  14. else
  15. {
  16.   echo "Invalid Username";
  17. }
复制代码
也就是说执行 mysql_num_rows之前先判定执行结果是不是resource
这样就能避免掉 fatal error 了

往后你写很多code, 包括 mysql_fetch_assoc, mysql_num_rows, mysql_fetch_array等最好都先进行 is_resource的判断, 这样就能避免掉无谓的fatal error 或 warrning.

加油.

评分

参与人数 3人气 +15 收起 理由
k2levin + 5 谢谢分享
Jjloveziling + 5 谢谢分享
hui_wooi + 5 精品文章

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 29-3-2024 06:00 AM , Processed in 0.080878 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表