PDA

View Full Version : سوال: این کد چه مشکلی داره که این ارور رو میده؟ Warning: Invalid argument supplied for foreach()



saeed-71
یک شنبه 14 اردیبهشت 1393, 18:22 عصر
سلام.
این کد چه مشکلی داره که این ارور رو میده؟
Warning: Invalid argument supplied for foreach()



<?php
include("config.php"); //include config file

if($_POST)
{
//sanitize post value
$group_number = filter_var($_POST["group_no"], FILTER_SANITIZE_NUMBER_INT, FILTER_FLAG_STRIP_HIGH);

//throw HTTP error if group number is not valid
if(!is_numeric($group_number)){
header('HTTP/1.1 500 Invalid number!');
exit();
}

//get current starting point of records
$position = ($group_number * $items_per_group);
//Limit our results within a specified range.
$sql = "SELECT * FROM paginate ORDER BY id ASC LIMIT $position, $items_per_group";
$results = $connect->query($sql);
foreach($result as $rows){
//echo '<li id="item_'.$rows['id'].'">'.$rows['id'].' <strong>'.$rows['name'].'</strong></span> &mdash; <span class="page_message">'.$rows['message'].'</span></li>';
}



}
?>

MRmoon
یک شنبه 14 اردیبهشت 1393, 18:27 عصر
آرگومنتی که به foreach دادی باید یه آرایه باشه.

saeed-71
یک شنبه 14 اردیبهشت 1393, 18:49 عصر
چجوری ارایش کنم؟

2undercover
یک شنبه 14 اردیبهشت 1393, 21:46 عصر
شما یک جا از result استفاده کردید یک جا از results

saeed-71
یک شنبه 14 اردیبهشت 1393, 22:13 عصر
شما یک جا از result استفاده کردید یک جا از results

مرسی درسشت کردم اما باز ارور Warning: Invalid argument supplied for foreach() رو میده!
این فایل کانفیگ من هستش



<?php
$servername = "localhost";
$dbname = "ss";
$username = "root";
$password = "";
$dsn = "mysql:host=$servername;dbname=$dbname";
try{
$connect =new PDO($dsn,$username,$password,array(PDO::MYSQL_ATTR _INIT_COMMAND=>'SET NAMES utf8'));
return $connect;
}
catch(Exception $error){
echo $error;
}


?>

درست کار میکر اما نمیدونم چرا اینجا جواب نمیده!

mylove_iman
دوشنبه 15 اردیبهشت 1393, 08:39 صبح
سلام
دوست عزیز من مواقعی به این خطا برخورد میکنم که نام فیلدی را صدا میکنم که اصلا وجود نداره.لطفا چک کن ببین در قسمت echo که داری فیلدها را صدا میکنه همه درست هستن یا نه
اگر درست بودن دستور select خودتو خیلی ساده کن یعنی از قسمت LIMIT $position, $items_per_group
را حذف کن ببین درست میشه.
همینجوری کم کم تستش کن اشالا حل میشه

plague
دوشنبه 15 اردیبهشت 1393, 14:30 عصر
foreach فقط آرایه قبول میکنه
چیزی که به شما داری بهش میدی آرایه نیست برا همین اررور میده
احتمالا کوئریت نتیجه نداره و چیزی غیر از آرایه برمیگردونه .... معمولا بعد از کوئری بجاییکه یه راست بدی به foreach باید چک کنی اول که ببینی کوئری درست اجرا شده و نتیجه داشته یا نه و در اینصورت اونوقت بدیش به foreach

2undercover
دوشنبه 15 اردیبهشت 1393, 14:59 عصر
در مستندات PHP اومده که متد query از کلاس PDO در صورت خطا مقدار false بر می گردونه.