انجمن ایران پی اچ پی
خطای mysqli num rows - نسخه قابل چاپ

+- انجمن ایران پی اچ پی
+-- انجمن: پی اچ پی/PHP (https://forum.iranphp.org/Forum-%D9%BE%DB%8C-%D8%A7%DA%86-%D9%BE%DB%8C-PHP)
+--- انجمن: خطا یابی و خطا زدایی (https://forum.iranphp.org/Forum-%D8%AE%D8%B7%D8%A7-%DB%8C%D8%A7%D8%A8%DB%8C-%D9%88-%D8%AE%D8%B7%D8%A7-%D8%B2%D8%AF%D8%A7%DB%8C%DB%8C)
--> +--- موضوع: خطای mysqli num rows



خطای mysqli num rows - asrema - ۱۳۹۸ فروردین ۱۸

سلام 
من کد زیر رو قبلا در لوکال هاست تست میکردم هیچ مشکلی نداشت
کد پی‌اچ‌پی:
<?php
                            if 
(isset($_POST['login'])) {
 
                               $username mysqli_real_escape_string($constrip_tags($_POST["username"]));
 
                               $pass mysqli_real_escape_string($con strip_tags($_POST["pass"]));
 
                               $select_use "SELECT * from users where username = '$username' and password = '$pass'";
 
                               $run_use mysqli_query($con"SET NAMES utf8");
 
                               $run_use mysqli_query($con"SET CHARACTER SET utf8");
 
                               $run_use mysqli_query($con$select_use);
 
                               $check_user mysqli_num_rows($run_use);
 
                               // if ($check_user === false) die(mysql_error());
 
                               if ($check_user == 1) {
 
                                   $user_info = @mysqli_fetch_array($run_use);
 
                                   $_SESSION["user_type"] = $user_info['user_type'];
 
                                   $_SESSION["user_email"] = $user_info['email'];
 
                                   $_SESSION["user_id"] = $user_info['id'];
 
                                   $_SESSION["user_names"] = $user_info['fl_name'];
 
                                   $_SESSION["user_phone"] = $user_info['phone'];
 
                                   $_SESSION["user_image"] = $user_info['image_add'];
 
                                   echo "<script>alert('خوش آمدید')</script>";
 
                                   echo "<script>window.open('my-account.php','_self')</script>";
 
                               }
 
                               else {
 
                                   $select_use "SELECT * from teachers where username = '$username' and password = '$pass'";
 
                                   $run_use mysqli_query($con"SET NAMES utf8");
 
                                   $run_use mysqli_query($con"SET CHARACTER SET utf8");
 
                                   $run_use mysqli_query($con$select_use);
 
                                   $check_user mysqli_num_rows($run_use);
 
                                   // if ($check_user === false) die(mysql_error());
 
                                   if ($check_user == 1){
 
                                       $user_info = @mysqli_fetch_array($run_use);
 
                                       $_SESSION["user_type"] = $user_info['user_type'];
 
                                       $_SESSION["user_email"] = $user_info['email'];
 
                                       $_SESSION["user_id"] = $user_info['id'];
 
                                       $_SESSION["user_names"] = $user_info['real_name'];
 
                                       $_SESSION["user_phone"] = $user_info['phone'];
 
                                       $_SESSION["user_image"] = $user_info['image_add'];
 
                                       echo "<script>alert('خوش آمدید')</script>";
 
                                       echo "<script>window.open('teacher.php','_self')</script>";
 
                                   }
 
                                   else{
 
                                       echo "<script>alert('کاربری با این مشخصات یافت نشد')</script>";
 
                                       echo "<script>window.open('login.php','_self')</script>";
 
                                   }
 
                               }
 
                           }
 
                           ?>
اما وقتی سایت رو به هاست انتقال دادم خطای زیر رو میده
Warning: mysql_num_rows() expects parameter 1 to be resource, Boolean given in 


RE: خطای mysqli num rows - kasbookar - ۱۳۹۸ فروردین ۱۸

(۱۳۹۸ فروردین ۱۸, ۰۱:۵۰ ق.ظ)asrema نوشته: سلام 
من کد زیر رو قبلا در لوکال هاست تست میکردم هیچ مشکلی نداشت
کد پی‌اچ‌پی:
<?php
                            if 
(isset($_POST['login'])) {
 
                               $username mysqli_real_escape_string($constrip_tags($_POST["username"]));
 
                               $pass mysqli_real_escape_string($con strip_tags($_POST["pass"]));
 
                               $select_use "SELECT * from users where username = '$username' and password = '$pass'";
 
                               $run_use mysqli_query($con"SET NAMES utf8");
 
                               $run_use mysqli_query($con"SET CHARACTER SET utf8");
 
                               $run_use mysqli_query($con$select_use);
 
                               $check_user mysqli_num_rows($run_use);
 
                               // if ($check_user === false) die(mysql_error());
 
                               if ($check_user == 1) {
 
                                   $user_info = @mysqli_fetch_array($run_use);
 
                                   $_SESSION["user_type"] = $user_info['user_type'];
 
                                   $_SESSION["user_email"] = $user_info['email'];
 
                                   $_SESSION["user_id"] = $user_info['id'];
 
                                   $_SESSION["user_names"] = $user_info['fl_name'];
 
                                   $_SESSION["user_phone"] = $user_info['phone'];
 
                                   $_SESSION["user_image"] = $user_info['image_add'];
 
                                   echo "<script>alert('خوش آمدید')</script>";
 
                                   echo "<script>window.open('my-account.php','_self')</script>";
 
                               }
 
                               else {
 
                                   $select_use "SELECT * from teachers where username = '$username' and password = '$pass'";
 
                                   $run_use mysqli_query($con"SET NAMES utf8");
 
                                   $run_use mysqli_query($con"SET CHARACTER SET utf8");
 
                                   $run_use mysqli_query($con$select_use);
 
                                   $check_user mysqli_num_rows($run_use);
 
                                   // if ($check_user === false) die(mysql_error());
 
                                   if ($check_user == 1){
 
                                       $user_info = @mysqli_fetch_array($run_use);
 
                                       $_SESSION["user_type"] = $user_info['user_type'];
 
                                       $_SESSION["user_email"] = $user_info['email'];
 
                                       $_SESSION["user_id"] = $user_info['id'];
 
                                       $_SESSION["user_names"] = $user_info['real_name'];
 
                                       $_SESSION["user_phone"] = $user_info['phone'];
 
                                       $_SESSION["user_image"] = $user_info['image_add'];
 
                                       echo "<script>alert('خوش آمدید')</script>";
 
                                       echo "<script>window.open('teacher.php','_self')</script>";
 
                                   }
 
                                   else{
 
                                       echo "<script>alert('کاربری با این مشخصات یافت نشد')</script>";
 
                                       echo "<script>window.open('login.php','_self')</script>";
 
                                   }
 
                               }
 
                           }
 
                           ?>
اما وقتی سایت رو به هاست انتقال دادم خطای زیر رو میده
Warning: mysql_num_rows() expects parameter 1 to be resource, Boolean given in 

سلام
اول اطلاعات اتصالات دیتابیست رو چک کن

دوم چک کن ببین کوئریت اجرا میشه و اطلاعات صحیح دریافت میشن ؟
کد پی‌اچ‌پی:
if($select_use === false) {
 
   var_dump(mysqli_error());
}
else {
 
   print_r(mysqli_num_rows($select_use));




RE: خطای mysqli num rows - asrema - ۱۳۹۸ فروردین ۱۸

(۱۳۹۸ فروردین ۱۸, ۰۲:۳۳ ق.ظ)kasbookar نوشته:
(۱۳۹۸ فروردین ۱۸, ۰۱:۵۰ ق.ظ)asrema نوشته: سلام 
من کد زیر رو قبلا در لوکال هاست تست میکردم هیچ مشکلی نداشت
کد پی‌اچ‌پی:
<?php
                            if 
(isset($_POST['login'])) {
 
                               $username mysqli_real_escape_string($constrip_tags($_POST["username"]));
 
                               $pass mysqli_real_escape_string($con strip_tags($_POST["pass"]));
 
                               $select_use "SELECT * from users where username = '$username' and password = '$pass'";
 
                               $run_use mysqli_query($con"SET NAMES utf8");
 
                               $run_use mysqli_query($con"SET CHARACTER SET utf8");
 
                               $run_use mysqli_query($con$select_use);
 
                               $check_user mysqli_num_rows($run_use);
 
                               // if ($check_user === false) die(mysql_error());
 
                               if ($check_user == 1) {
 
                                   $user_info = @mysqli_fetch_array($run_use);
 
                                   $_SESSION["user_type"] = $user_info['user_type'];
 
                                   $_SESSION["user_email"] = $user_info['email'];
 
                                   $_SESSION["user_id"] = $user_info['id'];
 
                                   $_SESSION["user_names"] = $user_info['fl_name'];
 
                                   $_SESSION["user_phone"] = $user_info['phone'];
 
                                   $_SESSION["user_image"] = $user_info['image_add'];
 
                                   echo "<script>alert('خوش آمدید')</script>";
 
                                   echo "<script>window.open('my-account.php','_self')</script>";
 
                               }
 
                               else {
 
                                   $select_use "SELECT * from teachers where username = '$username' and password = '$pass'";
 
                                   $run_use mysqli_query($con"SET NAMES utf8");
 
                                   $run_use mysqli_query($con"SET CHARACTER SET utf8");
 
                                   $run_use mysqli_query($con$select_use);
 
                                   $check_user mysqli_num_rows($run_use);
 
                                   // if ($check_user === false) die(mysql_error());
 
                                   if ($check_user == 1){
 
                                       $user_info = @mysqli_fetch_array($run_use);
 
                                       $_SESSION["user_type"] = $user_info['user_type'];
 
                                       $_SESSION["user_email"] = $user_info['email'];
 
                                       $_SESSION["user_id"] = $user_info['id'];
 
                                       $_SESSION["user_names"] = $user_info['real_name'];
 
                                       $_SESSION["user_phone"] = $user_info['phone'];
 
                                       $_SESSION["user_image"] = $user_info['image_add'];
 
                                       echo "<script>alert('خوش آمدید')</script>";
 
                                       echo "<script>window.open('teacher.php','_self')</script>";
 
                                   }
 
                                   else{
 
                                       echo "<script>alert('کاربری با این مشخصات یافت نشد')</script>";
 
                                       echo "<script>window.open('login.php','_self')</script>";
 
                                   }
 
                               }
 
                           }
 
                           ?>
اما وقتی سایت رو به هاست انتقال دادم خطای زیر رو میده
Warning: mysql_num_rows() expects parameter 1 to be resource, Boolean given in 

سلام
اول اطلاعات اتصالات دیتابیست رو چک کن

دوم چک کن ببین کوئریت اجرا میشه و اطلاعات صحیح دریافت میشن ؟
کد پی‌اچ‌پی:
if($select_use === false) {
 
   var_dump(mysqli_error());
}
else {
 
   print_r(mysqli_num_rows($amn));

تشکر بابت پاسختون
اتصال به دیتابیس چک کردم ولی خب چیز مشکوکی پیدا نکردم برای اطمینان یک if نوشتم که اگه وصل شد پیغام موفقیت آمیز بودن رو بده که نشون میداد به دیتابیس متصل میشه
فقط قسمت دوم رو متوجه نشدم  من شرط var dump رو برای selesct_use بذارم یا برای run_use?
چون run_use کوئری رو میفرسته
یک چیز دیگه اون amn چیه؟


RE: خطای mysqli num rows - asrema - ۱۳۹۸ فروردین ۱۸

دوستان خواهش میکنم اگه راهکاری دارین کمک کنید کل برنامه ام لنگ همین موضوع مونده  Huh Huh
به دیتابیس وصل میشه اما نه رکوردی ثبت میکنه نه رکوردی واکشی میکنه
نتیجه query هارو var_damp میکنم false میشه


RE: خطای mysqli num rows - Y.P.Y - ۱۳۹۸ فروردین ۱۸

کد زیر رو جایگزین run_use = mysqli_query($con, $select_use) کن:
کد پی‌اچ‌پی:
$run_use mysqli_query($con$select_use) or exit(mysql_error()); 

ببین خروجیش چیه


RE: خطای mysqli num rows - asrema - ۱۳۹۸ فروردین ۱۸

(۱۳۹۸ فروردین ۱۸, ۰۱:۵۰ ب.ظ)Y.P.Y نوشته: کد زیر رو جایگزین run_use = mysqli_query($con, $select_use) کن:
کد پی‌اچ‌پی:
$run_use mysqli_query($con$select_use) or exit(mysql_error()); 

ببین خروجیش چیه

هیچی چاپ نمیکنه تو خروجی


RE: خطای mysqli num rows - Y.P.Y - ۱۳۹۸ فروردین ۱۸

اشتباه شد، بجای mysql_error بزن mysqli_error

اگر خروجی نداد، این رو جایگزنی کد num row کن:

$check_user = mysqli_num_rows($run_use) or exit(mysqli_error());


RE: خطای mysqli num rows - asrema - ۱۳۹۸ فروردین ۱۸

دوستان مشکل حل شد خیلیییییییی لطف کردین مشکل رو اینجا مینویسم شاید به بقیه هم کمک کنه
دوستان کاربری که برای استفاده از دیتابیس تعریف کرده بودم به صورت پیش فرض به هیچ کدام از دستورهای insert و update و.... دسترسی نداشت
که از قسمت کنتر پنل cpanel باید سطح دسترسی رو تغییر داد


RE: خطای mysqli num rows - Y.P.Y - ۱۳۹۸ فروردین ۱۸

پیام خطا دریافت کردی؟ چی بود پیام


RE: خطای mysqli num rows - asrema - ۱۳۹۸ فروردین ۱۹

(۱۳۹۸ فروردین ۱۸, ۰۶:۱۸ ب.ظ)Y.P.Y نوشته: پیام خطا دریافت کردی؟ چی بود پیام

کد:
'INSERT command denied to user 'asrema' for table 'tablename