رفتن به مطلب

چند سوال در مورد توابع mysqli


پست های پیشنهاد شده

سلام

یه چندتا مشکل دارم با mysql.

الان تابع معادل mysql_num_rows و mysqli_connect_errno توی حالت oop چی میشه؟

این دو تا جواب نمیده!


$db -> num_rows();
$db -> erno();

و یه مشکل دیگه اینکه قبلا وقتی می خواستم چک کنم کوئری SELECT نتیجه داشته یا نه، یه شرط می ذاشتم براش:


$query = "SELECT FROM ban WHERE ip=$userIp AND type=$type";
$res = $myDb-> query($query);
if ($res) return false; else die('Fattal Error!!! Contact Admin');

اما الان جواب نمیده!

نکنه برای DELETE و UPDATE هم همین مشکل پیش بیاد!

اشکال از کجاست؟

چون این مشکلو داشتم، مجبور شدم کوئری رو به این شکل بازنویسی کنم:


$query = "SELECT until FROM ban WHERE username=$username AND type=$type";
$res = $myDb -> query($query);
$res = $res -> fetch_assoc();
if (count($res) > 0)
{
//...
}

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

شماره خطا:


$mysqli->errno

برای تعداد خروجی هم num_rows هست و تابع mysqli_num_rows

طبق توضیحات:


Returns FALSE on failure. For successful SELECT, SHOW, DESCRIBE or EXPLAIN queries mysqli_query() will return a mysqli_result object. For other successful queries mysqli_query() will return TRUE.

برای بررسی میتوانید چک کنید خروجی object باشه: is_object

لینک به ارسال

شماره خطا:


$mysqli->errno

برای تعداد خروجی هم num_rows هست و تابع mysqli_num_rows

طبق توضیحات:


Returns FALSE on failure. For successful SELECT, SHOW, DESCRIBE or EXPLAIN queries mysqli_query() will return a mysqli_result object. For other successful queries mysqli_query() will return TRUE.

برای بررسی میتوانید چک کنید خروجی object باشه: is_object

ممنون از پاسخ مختصر و مفیدتون

یعنی برای بررسی درست اجرا شدن کوئری هایی به غیر از SELECT, SHOW, DESCRIBE or EXPLAIN میشه از دستور شرطی اسفاده کرد، ولی برای بررسی درست اجرا شدن این کوئری ها حتما باید از is_object استفاده بشه، و برای اینکه بفهمیم رکوردی مطابق کوئری در جدول وجود داشته یا نه از num_rows یا تابع mysqli_num_rows باید استفاده بشه و is_object جواب نمیده.

امیدوارم خلاصه و صحیح باشه.

اما در مورد errno، این خطا رو میده:

Undefined property: dbModel::$errno in C:\wamp\www\ins\controller\customerController.php
ویرایش شده توسط Anisi
لینک به ارسال

شما خودتون کلاس رو نوشتید یا فریمورک هست؟

خودم نوشتم. اما خیلی ساده:


public function __construct()
{
@$this->db = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
if($this-> db -> errno )
{
die('خطا: امکان برقراری ارتباط با پایگاه داده وجود ندارد');
}
$this->db->set_charset('utf8');
}

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

شما به جای mysqli چرا از کلاس PDO استفاده نمیکنین خیلی بهتره

آخه الان نوشتمش دیگه!

ان شا ا... توی پروژه بعدی

لینک به ارسال

اگر برنامه نویسی برنامه رو هنوز شروع نکردید

پیشنهاد منم PDO هست

توابعی که در اختیار میزاره خیلی ساده و روان هست

لینک به ارسال

میتونین از متد

$db->affected_rows

استفاده کنید که تعداد row هایی که کوئری بهشون اعمال شده رو برمیگردونه که حداقل 1 هست و در غیر این صورت 0

http://www.php.net/manual/en/mysqli.affected-rows.php

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...