علت ارور mysqli_query() expects parameter 1 to be mysqli, null given in
https://lamtakam.com/qanda/2275/علت-ارور-mysqliquery-expects-parameter-1-to-be-mysqli-null-given-in 1با سلام دوستان برنامه نویس یه کمکی بما میکنید بگید مشکله این کد کجاست؟
<?php
$sql="SELECT * FROM users WHERE id=1";
$result=$database->query($sql);
$user_found=mysqli_fetch_array($result);
echo $user_found['user name'];
?>
اینهم کلاس دیتابیس:
class Database{
public $connection;
function __construct()
{
$this->open_db_connection();
}
public function open_db_connection(){
$connection=mysqli_connect('localhost', 'root', '','blog');
if(mysqli_connect_errno()){
die("Database connection Failed" . mysqli_error($connection));
}
}
public function query($sql){
$result= mysqli_query($this->connection, $sql);
return $result;
}
private function confirm_query($result){
if(!$result){
die("Query Failed");
}
}
public function escape_string($string){
$escaped_srting =mysqli_real_escape_string($this->connection,$string);
return $string;
}
}
اروری هم که بهم میده اینه:
mysqli_query() expects parameter 1 to be mysqli, null given in C:\Xampp\htdocs\blog\admin\include\database005.php on line 19
mysqli_fetch_array() expects at least 1 parameter, 0 given in //C:\Xampp\htdocs\blog\admin\include\admin_content.php on line 12
1 | خب ارور به وضوح داره میگه که $this->connection مقدارش null هست. یعنی اولین پارامتری که داره برای تابع mysqli_query() ارسال میشه باید یک ابجکت از کانکشن به دیتابیس باشه ولی شما داری null میفرستی. ــ سعید مرادی در 6 سال قبل |
||
@سعید.مرادی آقا سعید من سوالمو ویرایش کردم کل کلاس نوشته شده رو انداختم اینجا. من واقعا گیج شدم دقیقا چیکار باید بکنم؟ ــ امیر کریمی در 6 سال قبل | |||
معماری کدت مشکل داره، شما نباید تابع open_db_connection() رو توی __construct() صدا بزنی. چون وقتی __construct() اجرا میشه هنوز اون تابع صدا زده نشده و مقدارش null هست. این مثال رو ببینی متوجه میشی: آدرس بدون عنوان ــ سعید مرادی در 6 سال قبل |
|||
@سعید.مرادی نه مشکل تابع ًopen_db_connection() ً نبود . به هرحال حل شد ممنون از کمکت ــ امیر کریمی در 6 سال قبل | |||
1 | خواهش میکنم، فقط بد نیست یک توضیحی بدی که مشکل چی بود؟ و ممنون میشیم اگه یک جواب هم براش بنویسی، چون این مشکل رو شاید در اینده دیگران هم باهاش مواجه بشن و اینطوری میتونی بهشون کمک کنی ــ سعید مرادی در 6 سال قبل | ||
2 | شما باید متغییر $connection را در open_db_connection() رو به این صورت $this->connection مقدار دهی کنید. ــ علی رضایی |
||
@علی.قایینی بله دقیقا همینکارو کردم و درست شد دست شما درد نکنه ــ امیر کریمی در 6 سال قبل | |||
خواهش می کنم . موفق باشید ــ علی رضایی |
|||
لطفا سوالتون رو ویرایش کنید و در آخرش که ارور MySQL رو عینا نوشتید، در ابتداش یک بک-اسلش بزارید که اون # تبدیل نشه به یک تگ heading و اینقدر بزرگ نمایش داده بشه. ــ سروش قادری نسب در 6 سال قبل |