کلیدستان

نسخه‌ی کامل: تابع num_rows
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سللام

کد:
$email_check = mysqli_query($conn,"SELECT email FROM users WHERE email='$regemail'");
$do_email_check = mysqli_num_rows($email_check);

من اینکد رو وارد میکنم و این ارور ر و میگیرم 

کد:
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\register.php on line 35

این سوالمم لطفا جواب بدید پروژه دارم دیگه مزاحم نمیشم  
سلام.
من حدس میزنم مشکل از خط مربوط به دستور mysqli_query باشد. بنابراین باید آن را خطایابی کنید. برای این منظور، کلید زیر را بخوانید و مشابه آن عمل کنید (برای خطایابی دستور mysqli_query در کدها) :

http://www.kelidestan.com/keys/keys.php?key=573

اون خطی که ازش ایراد میگیره اینه 

کد:
$do_email_check = mysqli_num_rows($email_check);

اون تابع mysqli_error رو هم گذاشتم اما هیچ اروری نشون نداد :

کد:
error:

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\register.php on line 39
khataye query

کوئری رو عین کتاب مینویسم .دیتابیس رو هم عین دستورات اون درست کردم. 

کد:
$email_check = mysqli_query($conn,"SELECT email FROM users WHERE email='$regemail'");

احتملاش هست این تابع mysqli_num_rows() تغییر کرده باشه؟(چون این اسکریپت یعنی کتابه قدیمیه)

اینم کل اسکریپت.

 
کد پی‌اچ‌پی:
<?php 
$err 
" ";
$regname $_POST["regname"];
$regemail $_POST["regemail"];
$regpass1 $_POST["regpass1"];
$regpass2 $_POST["regpass2"];
if(empty(
$regname)){
die(
"pleas enter your username");
}
if(empty(
$regpass1)){
die(
"plase enter your password");}
if(empty(
$regpass2)){
die(
"plase coniform your password");
}
if(empty(
$regemail)){
die(
"plase enter your email<br />
"
);
}
if(
$regpass1!=$regpass2)
{
die(
"password dont mach<br />");
}
$conn mysqli_connect("localhost","root","","legolas")or die ("ettesal bargharar nashod");
$user_check mysqli_query($conn,"SELECT name FROM users WHERE name = '$regname'");
$do_user_check mysqli_num_rows($user_check);


$email_check mysqli_query($conn,"SELECT email FROM users WHERE email='$regemail'");

$do_email_check mysqli_num_rows($email_check);
if(
$do_user_check>0){
die(
"username is alredy in use<br />");
}
if(
$do_email_check>0){
die(
"email is alredy exist");
}
$sql "insert into users
(name,email,password)values('
$_POST[regname]','$_POST[regemail]','$_POST[regpass1]')";
$resualt mysqli_query($conn,$sql)or die("khataye query");
print 
"<h1> you have registred succesfully</h1>";
print
"<a href = 'index.php'>go to login page</a>";
?>
هنگام استفاده از کدهای PHP برای اتصال و اجرای یک سری عملیات بر روی پایگاه داده MySQL ، یکی از مواردی که خیلی با آن برخورد داشته ام، این است که در خطی از کدها، یک مشکل در دستورات کار با پایگاه داده وجود دارد، اما PHP ، یک خط دیگر را به عنوان خطا معرفی می کند. در واقع، در اینگونه موارد، ممکن است کدنویسی مشکلی نداشته باشد (از نظر قواعد کدنویسی)، بلکه ساختار جدول (table) مورد نظر با دستوراتی که برای آن با کدهای PHP نوشته اید، ناسازگار باشد. پس همیشه ابتدا کدنویسی PHP را چک کنید و بعد ببینید ساختار جدول با دستورات sql که با کدهای PHP نوشته اید، سازگار است یا خیر.
شما ابتدا خطی که ذکر شده را چک کنید، اگر مشکلی نداشت، باید دستورات قبل تر را بررسی نمایید.
بنابراین شما قسمت های قبل تر کدها را نیز با همان روشی که لینکش را ذکر کردم، بررسی کنید.
در ضمن، یکی از مواردی که کاربران زیاد اشتباه می کنند، فراموش کردن موارد استفاده از علامت ' می باشد. این علامت فقط باید برای ستون هایی از جدول (table) به کار رود که به صورت متن هستند (برای اعداد نباید به کار رود). این را هم مد نظر داشته باشید.