| 
| 
查看: 1251|回复: 6
 | 
遇到解决不了的问题。
[复制链接] |  
 |  | 
 
| Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\demoweb\demo.php on line 29 这是什么意思呢?有大大可以教下吗?
 
 | 
 |  |  |  |
 
|  |  |  
|  |  | 
 |  | 
 
 发表于 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有几个重点,重点明白之后就好像打通“任督二脉”一样什么都可以自己摸索了,只是时间的问题 
 第一要懂用
 如果数据太多就复制代码exit(var_dump($u_check));
第二要尝试了解你dump了什么出来,本来应该是什么,现在为什么是这样复制代码echo '<pre>';
exit(var_dump($u_check));
 第三要了解 什么是 function
 
 第四要了解 什么是 class
 
 这四个懂了之后就出现什么error都可以慢慢找出原因了,当然懂了这4样基本中的基本就慢慢学更多进阶的东西咯 本帖最后由 vronn12345 于 17-10-2014 02:08 AM 编辑
 
 
 | 
 评分
查看全部评分
 |  |  |  |
 
|  |  |  
|  |  | 
 |  | 
 
 发表于 17-10-2014 09:46 AM
|
显示全部楼层 
| 这行的意思是, 你在第29行, 也就是复制代码Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\demoweb\demo.php on line 29
出现了问题复制代码$check = mysql_num_rows($u_check);
 具体的问题是, 你的 $u_check里面是boolen值, 而执行mysql_num_rows() 传进去的变数必须是 resource
 
 也就是说你在执行这行的时候
 就已经出现错误复制代码$u_check = mysql_query("SELECT username FROM users WHERE username='$un'");
 有两个可能,
 1) 你的select 语法读回来是空值,
 2) 你的select 语法错误了
 
 具体要怎样处理?
 修改成复制代码
// 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);
这样你执行的过程中, 会把你的query output 出来, 你在output 出来的query copy 下来,在贴到 phpmyadmin/navicat/mysqlgui 这类的db 界面去执行看下什么结果.复制代码
// Check if user already exists
unset($SQL,$u_check);
//Set the sql querry
$SQL="SELECT username FROM users WHERE username='$un'";
//test and debug use
echo $SQL;
//run the query
$u_check = mysql_query($SQL);
// Count the amount of rows where username = $un
$check = mysql_num_rows($u_check);
 如果是第2个问题(语法错误), 根据db 给你的指示进行修改.
 
 如果是第一个问题(回传空值), 你的程式就要改成这样
 也就是说执行 mysql_num_rows之前先判定执行结果是不是resource复制代码
// Check if user already exists
unset($SQL,$u_check);
//Set the sql querry
$SQL="SELECT username FROM users WHERE username='$un'";
//test and debug use
echo $SQL;
//run the query
$u_check = mysql_query($SQL);
// Count the amount of rows where username = $un
if(is_rerousce($u_check))
{
  $check = mysql_num_rows($u_check);
}
else
{
  echo "Invalid Username";
}
这样就能避免掉 fatal error 了
 
 往后你写很多code, 包括 mysql_fetch_assoc, mysql_num_rows, mysql_fetch_array等最好都先进行 is_resource的判断, 这样就能避免掉无谓的fatal error 或 warrning.
 
 加油.
 | 
 评分
查看全部评分
 |  |  |  |
 
|  |  |  
|  |  |  |  | 
            本周最热论坛帖子 |