ورود

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : گرفتن اطلاعات از دیتابیس در php



jpmo02
March 12th, 2017, 11:34
سلام
من برای اینکه یه سری اطلاعات رو از داخل دیتابس mysql بخونم اومدم و از متود prepare که در ارتباط mysqli هست استفاده میکنم
برای اینکه نتایج رو هم در بیارم از متود get_result() استفاده میکنم
یه تیکه از کد من به شکل زیر هست

require_once 'config.php';

if ($link = new mysqli($dbHost, $dbUser, $dbPass, $dbName)) {
mysqli_set_charset($link, "utf8");
$query = $link->prepare("SELECT `name`,`cost`,`img` FROM `products` WHERE `id` = ?");
mysqli_set_charset($link, "utf8");
$query->bind_param('s', $_POST['product']);
$query->execute();
$res = $query->get_result();
$result = $res->fetch_assoc();
echo $result['name'];
}




این کد روی localhost که php ورژن 7.0.9 هست به راحتی و بدون مشکل اجرا میشه
وقتی میبرم روی هاست لینوکس cpanel که ورژن 5.3 داره اررور زیر میاد

Fatal error: Call to undefined method mysqli_stmt::get_result() in /public_html/order/index.php on line 203

وقتی هم که ورژن php رو از داخل cpanel به 7.0 تغییر میدم اررور زیر میاد

Fatal error: Uncaught Error: Call to undefined method mysqli_stmt::get_result() in /public_html/order/index.php:203 Stack trace: #0 {main} thrown in /public_html/order/index.php on line 203

ممنون میشم راهنماییم کنید چطور این مشکل رو حل کنم
یا کلا چطور اطلاعات رو از دیتابیس بیرون بکشم و نشون بدم یا استفاده کنم
سپاس

AtrafNet
March 12th, 2017, 11:58
سلام
این دو لینک رو ببینید:

http://stackoverflow.com/questions/8321096/call-to-undefined-method-mysqli-stmtget-result
http://stackoverflow.com/questions/32550278/call-to-undefined-method-mysqli-stmtget-result-but-mysqlnd-seems-installed

ظاهراً برای استفاده از دستور mysqli_stmt::get_result باید بسته الحاقی mysqlnd extension روی MySQL فعال باشه.

اگر هاست شما با سیستم عامل کلود لینوکس هستش و امکان فعال یا غیرفعال کردن extension های PHP رو دارید مطمئن بشید که mysqli و اگه وجود داره mysqlnd فعال باشه.

همچنین پیشنهاد میکنم یه نگاهی به توابع PDO هم بندازید PDO مزایای خیلی بیشتری نسبت به MySQLi داره که البته اینم باید Extension مورد نیازش که با نام pdo_mysql هستش باید فعال باشه.

phpcoding
March 12th, 2017, 12:23
سلام
من برای اینکه یه سری اطلاعات رو از داخل دیتابس mysql بخونم اومدم و از متود prepare که در ارتباط mysqli هست استفاده میکنم
برای اینکه نتایج رو هم در بیارم از متود get_result() استفاده میکنم
یه تیکه از کد من به شکل زیر هست

require_once 'config.php';

if ($link = new mysqli($dbHost, $dbUser, $dbPass, $dbName)) {
mysqli_set_charset($link, "utf8");
$query = $link->prepare("SELECT `name`,`cost`,`img` FROM `products` WHERE `id` = ?");
mysqli_set_charset($link, "utf8");
$query->bind_param('s', $_POST['product']);
$query->execute();
$res = $query->get_result();
$result = $res->fetch_assoc();
echo $result['name'];
}




این کد روی localhost که php ورژن 7.0.9 هست به راحتی و بدون مشکل اجرا میشه
وقتی میبرم روی هاست لینوکس cpanel که ورژن 5.3 داره اررور زیر میاد

Fatal error: Call to undefined method mysqli_stmt::get_result() in /public_html/order/index.php on line 203

وقتی هم که ورژن php رو از داخل cpanel به 7.0 تغییر میدم اررور زیر میاد

Fatal error: Uncaught Error: Call to undefined method mysqli_stmt::get_result() in /public_html/order/index.php:203 Stack trace: #0 {main} thrown in /public_html/order/index.php on line 203

ممنون میشم راهنماییم کنید چطور این مشکل رو حل کنم
یا کلا چطور اطلاعات رو از دیتابیس بیرون بکشم و نشون بدم یا استفاده کنم
سپاس


دوست عزیز من این کد را با کتابخانه ی MySQLI به شیوه ی دیگه ای مینویسم . شاید کمکتون کنه . ولی چون تا حالا در کتابخانه ی MySQLI از تابع prepare استفاده نکردم اطلاعاتی در موردش ندارم
بیشتر در PDO از prepare استفاده کردم
کد ویرایش شده :


if ($link = new mysqli($dbHost, $dbUser, $dbPass, $dbName)) {
$query = $link->query("SELECT `name`,`cost`,`img` FROM `products` WHERE `id` = '".$_POST['product']."'");
$row = $res->fetch_array(MYSQLI_ASSOC);
echo $row['name'];
}

jpmo02
March 12th, 2017, 12:48
سلام
این دو لینک رو ببینید:
http://stackoverflow.com/questions/8321096/call-to-undefined-method-mysqli-stmtget-result
http://stackoverflow.com/questions/32550278/call-to-undefined-method-mysqli-stmtget-result-but-mysqlnd-seems-installed
ظاهراً برای استفاده از دستور mysqli_stmt::get_result باید بسته الحاقی mysqlnd extension روی MySQL فعال باشه.
اگر هاست شما با سیستم عامل کلود لینوکس هستش و امکان فعال یا غیرفعال کردن extension های PHP رو دار ید مطمئن بشید که mysqli و اگه وجود داره mysqlnd فعال باشه.
همچنین پیشنهاد میکنم یه نگاهی به توابع PDO هم بندازید PDO مزایای خیلی بیشتری نسبت به MySQLi داره که البته اینم باید Extension مورد نیازش که با نام pdo_mysql هستش باید فعال باشه.
پشتیبان هاست و سرور گفتن که از mysqli پشتیبانی میکنه و mysqlnd هم فعاله
پس چرا این ارورها رو میگیرم؟؟
ممنون