PDA

View Full Version : مبتدی: تفاوت این دو دستور



Ice-Cream
یک شنبه 12 مرداد 1399, 17:15 عصر
سلام
توی آموزشهای w3schools در خصوص درج اطلاعات در دیتابیس به این صورت نوشته


<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}

$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('John', 'Doe', 'john@example.com')";

if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();
?>

سوالی که دارم در خصوص خط 17 هست که شرط گذاشته و مقایسه کرده که مقدار اجرای کوئری برابر true باشه. در حالت Procedural نیاز به بررسی با مقدار true نبود. میخواستم بدونم دلیل اینکه درحالت شی گرائی همچین مقایسه ای کرده چیه.
چون بدون بررسی مقدار true یعنی به شکل زیر هم مقادیر به درستی در دیتابیس درج میشن.


if ($conn->query($sql)){
echo "New record created successfully";
} else {
echo "Error inserting data : " . $conn->error;
}

ممنون میشم اگر در این رابطه راهنماییم کنید.

plague
دوشنبه 13 مرداد 1399, 03:14 صبح
if ($conn->query($sql))


این هم داره true بودن رو چک میکنه فرقی نمیکنه با



if ($conn->query($sql)=== TRUE )


هردوش یکیه ... وقتی یک عبارت رو توی if بزاری داری برای TRUE و FALSE بودن چکش میکنی ... شما میتونی ==TRUE توی شرط بزاری که یکم واضح تر باشه یا میتونی نزاری ولی عملا هردوش یکیه
برای فالز هم به همین شکله شما میتوین فالز بودن رو اینجوری بررسی کنی


if($x === false )

یا اینجوری


if(!$x)




به طور خلاصه وقتی کوئری INSERT بزاری یا TRUE برمیگردونه یعنی موفق بود یا FALSE برمیگردونه که میگه ناموفق بوده حالا شما میتونی به چندین روش مختلف بعدش اینا رو چک کنی

در در حالت Procedural هم برای true بودن چک کرده ولی از نوع خلاصه شده بدون کلمه true

us1234
یک شنبه 09 شهریور 1399, 08:44 صبح
وقتی === در شرط باشه یعنی type casting به صورت اتوماتیک توسط php انجام نمیشه و فقط و فقط در صورتی شرط درست میشه که نتیجه دقیقا مثل اونطرف === باشه
به زبان ساده
در این کد :

if($x)
$x هرچی بجز 0 و false باشه شرط درسته ، یعنی از 1 بگیر تا هر نوع مقدار دیگه حتی اگر یک String باشه ولی وقتی === استفاده شد فقط وقتی شرط درست تلقی میشه که 2 طرف === دقیقا مثل هم باشند
یعنی اگر کد به این شکل شد :

if($x === true)
در صورتی شرط درست است که مقدار $x دقیقا true باشد.