دریافت (select) اطلاعات از MYSQL با PHP

اطلاعات از MYSQL با PHP – اینکه چطور بتوانیم از MYSQL با استفاده از PHP اطلاعات دریافت کنیم با روش های مختلفی امکان پذیر است .
هم به صورت procedural و هم object oriented که روشی که ما به برنامه نویسان توصیه می کنیم object oriented که باعث راحت تر شدن کدنویسی و عیب یابی می شود .
جالب اینجا هست که PHP دست ما را باز گذاشته و دو کلاس قدرتمند برای تعامل با MYSQL پیش روی ما قرار داده PDO و mysqli که بیش تر استفاده مان از mysqli می باشد .
نکته جالب دیگر این است که اگر از stmt در این دو کلاس استفاده کنید خیالتان از بابت sql injection راحت می شود ( ;
توصیه می شود قبل از شروع کار این آموزش را بررسی کنید .
دریافت اطلاعات از MYSQL بدون stmt
در صورتی ورودی از کاربر دریافت نمی کنید نیازی به استفاده از stmt نیست و می توان به عادی استفاده کرد .
در خط 6 کد set_charset را بر روی utf8 گذاشته ایم که اگر داده ای دریافت یا ارسال شد به صورت صحیح کاراکتر های پارسی را انتقال دهد .
$mysqli = new mysqli("localhost", "root", "", "demo_db");
if ($mysqli->connect_error) {
die("MYSQL ISSUE : " . $mysqli->connect_error);
}
$mysqli->set_charset("utf8");
$query = "SELECT * FROM `my_tbl`";
$rows = [];
if ($res = $mysqli->query($query)) {
if ($res->num_rows) {
while ($row = $res->fetch_assoc()) {
$rows[] = $row;
}
}
$res->close();
}
var_dump($rows);
$mysqli->close();
دریافت اطلاعات از MYSQL با stmt
اگر اطلاعات از کاربر دریافت می کنید حتما از stmt استفاده کنید که با خطا sql inejction مواجه نشوید .
پس از اینکه دیگر نیازی به stmt و mysqli نداشتید می توانید با استفاده از تابع close کانال استفاده از این منابع را ببندید .
$mysqli = new mysqli("localhost", "root", "", "demo_db");
if ($mysqli->connect_error) {
die("MYSQL ISSUE : " . $mysqli->connect_error);
}
$mysqli->set_charset("utf8");
$stmt = $mysqli->stmt_init();
$user_input = "'content_2";
$query = "SELECT * FROM `my_tbl` WHERE content=?";
$rows = [];
$stmt->prepare($query);
$stmt->bind_param('s', $user_input);
if ($stmt->execute() && $res = $stmt->get_result()) {
if ($stmt->affected_rows || $res->num_rows) {
while ($row = $res->fetch_assoc()) {
$rows[] = $row;
}
}
}
var_dump($rows);
$stmt->close();
$mysqli->close();
ارسال نظر