Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given

PHP

توسط mahbobe-prog در 4 سال پیش
0 2.5k 14 4 سال پیش
mahbobe-progc0derphp-secreza-irdevcomodo
0

سلام

function fetch_assoc($res)
		{
			return mysql_fetch_assoc($res) ;
		}// End fetch_array() method
		
		function select($fields="*" , $table , $conditions = "" , $options = array())
		{
			var_dump( $fields) ;
			var_dump($conditions) ;
			if(var_dump($fields == array())) // داخل if نمیره
			{
				echo 'select feild' ;
				$fields = implode(',' ,$fields) ;
				$conditions = implode("','" , $conditions) ;				
			}
			else 
			 	$fields = '*' ;
			
			$sql = "SELECT ".$fields." FROM ". $this->table ;
			if($conditions != "")
			{
				$sql .= " WHERE ".'$conditions' ;
			}
			if(isset($options['order_by']))
			{
				$sql .= " ORDER BY ".$options['order_by'] ;
				if(isset($options['order_dir']))
				{
					$sql .= " ".my_strtoupper($options['order_dir']) ;
				}
			}
			if(isset($options['limit_start']) && isset($options['limit']))
			{
				$sql .= " LIMIT ".$options['limit_start'].", ".$options['limit'] ;
			}
			else
				if(isset($options['limit']))
				{
					$sql .= " LIMIT ".$options['limit'] ;
				}
			 $res = $this->exec($sql) ;
			 return $this -> fetch_assoc($res) ;
		}

اینم بعد اجرا array(2) { [0]=> string(8) "userName" [1]=> string(8) "password" } array(2) { [0]=> string(25) "mmxx.prog@gmail.com" [1]=> string(6) "14sd14" } bool(false) Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\userClass1\myDB.php on line

0

محتوای متغیر res$ رو بررسی کن دستور Sql مشکل داره.

0

> محتوای متغیر res$ رو بررسی کن دستور Sql مشکل داره.
متد exec() برا یک متد دیگه درست کار میکنه و مشکلی نداره و لی داخل if که echo برا چک کردن میدم خروجی نمیده و داخل if نمیره فکر میکنم بابت همین هستش که متغیر $sql مشکل پیدا نمیکنه نمیدونم براچی اینطوریه لطفا راهنماییم کنین
0

سلام var_dump رو تو شرط نباید بذاید.

0

> سلام var_dump رو تو شرط نباید بذاید.
سلام var_dump رو هم ورداشتم ارورش تغییری نکرد .
0

علت خطا اینه که بجای resource بهش نوع داده ای boolean با مقدار False داده شده و این یعنی احتمالا سینتکس SQL داده شده با خطا مواجه شده همونطور که دوستانمون گفتن. علت اینکه دستورات داخل if اجرا نمیشن حتما اینه که شرط برقرار نمیشه دیگه! اگر var_dump رو برداشتید باز دستورات اجرا نمیشن یعنی شرط درست نیست.

نتیجه اجرای این دستور رو بذارید :

echo gettype($fields)

برای اجرای شرط باید نتیجه دستور بالا array باشه و نوع داده ای متغیر res$ هم باید resource باشه.

0

نوع متغیر $fields رو چک کردم از نوع ارایه هستش پس شرط if درست هست ولی echo که داخل کدای if گذاشتم اجرا نمیشه و $res از نوع بولین هستش

0

متد select رو کجا فراخوانی کردید؟ در صورت امکان کد کامل رو پیوست کنید.

0

سلام دوستان شما تو شرط دارید اشتباه میکنید.

if( $fields == array() )

در صورتی درسته که متغیر برابر با یک آرایه خالی باشه، پس شرط اشتباهه. اگر میخواید ببینید متغیر fields$ آرایه هست یا خیر باید از تابع is_array استفاده کنید.

0

> سلام دوستان شما تو شرط دارید اشتباه میکنید. ``` if( $fields == array() ) ``` در صورتی درسته که متغیر برابر با یک آرایه خالی باشه، پس شرط اشتباهه. اگر میخواید ببینید متغیر fields$ آرایه هست یا خیر باید از تابع [is_array](http://php.net/is_array) استفاده کنید.

آه خدای من :73: راست میگیدا چطور حواسم به این نبود :60:

0

سلام ممنون از راهنماییتون

function login ( $userName , $password ) 
	{
		if ( !($this -> validForm -> IsEmpty ($userName)  && $this -> validForm -> IsEmpty ($password)  ) ) 
		{
			$this -> setUserName ($userName) ;
			if ( $this -> validForm -> IsPass( $password ) ) 
			{
				//echo $password;
				$this -> user_pass = $password ;
			}
			$this -> myDB -> select(
				$this -> myDB -> feild_login , 
				$this -> myDB -> table , 
				array(
					$this->user_id , 
					$this->user_pass
					)) ;	
		}
	}

صفحه myDB.php

function fetch_assoc($res)
		{
			return mysql_fetch_assoc($res) ;
		}// End fetch_array() method
		
		function select($fields="*" , $table , $conditions = "" , $options = array())
		{
			var_dump( $fields) ;
			var_dump($conditions) ;
			echo gettype($fields) ;
			if( is_array($fields)) 
			{
				echo 'select feild' ;
				$fields = implode(',' ,$fields) ;
				$conditions = implode("','" , $conditions) ;				
			}
			else 
			 	$fields = '*' ;
			
			$sql = "SELECT ".$fields." FROM ". $this->table ;
			if($conditions != "")
			{
				$sql .= " WHERE ".'$conditions' ;
			}
			if(isset($options['order_by']))
			{
				$sql .= " ORDER BY ".$options['order_by'] ;
				if(isset($options['order_dir']))
				{
					$sql .= " ".my_strtoupper($options['order_dir']) ;
				}
			}
			if(isset($options['limit_start']) && isset($options['limit']))
			{
				$sql .= " LIMIT ".$options['limit_start'].", ".$options['limit'] ;
			}
			else
				if(isset($options['limit']))
				{
					$sql .= " LIMIT ".$options['limit'] ;
				}
			 $res = $this->exec($sql) ;
			 echo  gettype($res);
			 return $this -> fetch_assoc($res) ;
		}

مشکل if برطرف شد ممنونم ولی همون ارور Warning رو میگیره..... ببخشین تو زحمت میفتین

0

ببنید متغیر sql$ در نهایت چیه درسته یا نه. ببین فیلدهایی که داری انتخاب میکنید تو جدول وجود داره یا نه.

0

> ببنید متغیر sql$ در نهایت چیه درسته یا نه. ببین فیلدهایی که داری انتخاب میکنید تو جدول وجود داره یا نه.
سلام نوع متغیر sql$ بولین هستش فیلدایی که انتخاب میکنم داخل جدول هست
0

> سلام نوع متغیر sql$ بولین هستش فیلدایی که انتخاب میکنم داخل جدول هست
نوع sql$ بولینه؟ یا res$ ؟ منظورم نوعش نبود خود دستور خطا داره SELECT * FROM ...
0

سلام مشکلم رفع شد اشکال اخری از sql$ بودش که خداروشکر درست شد:smilingsmiley:

خوش آمدید

برای طرح سوال، ایجاد بحث و فعالیت در سایت نیاز است ابتدا وارد حساب کاربری خود شوید. در صورتی که هنوز عضو سایت نیستید میتوانید در عرض تنها چند ثانیه ثبت نام کنید.

لطفا ابتدا لاگین کنید