Ошибка Invalid argument supplied for foreach()

ppbinag

Новичок
Warning: Invalid argument supplied for foreach() in Z:\home\localhost\www\new-dream.ru\views\pages\editaccount.php on line 13
Код документа editaccount.php (с 10 по 24 строки, в 13 строке как раз ошибка)
PHP:
<?php
$em = $em['email'];
        $product = get_zakaz($em);
 foreach($products as $it):
?>

<table align="center" cellpadding="0" cellspacing="0" class="productcat" border="0" width="120">
    <tr>
        <td valign="top">
            <div><a href="index.php?view=product&id=<?=$it['id']?>"></a><?=$it['id']?></div>
        </td>
    </tr>
</table>

<? endforeach; ?>
Подключаемая функция
PHP:
function get_zakaz($em)
    {
        db_connect();
     
        $query = ("SELECT * FROM orders WHERE email='$em'");
        
        $result = mysql_query($query);
        
        $raw = mysql_fetch_array($result);
        
        return $raw;
    }
Задача этого кода выбрать из таблицы orders все заказы (id) по email (вошедшего пользователя)
 

ppbinag

Новичок
Все равно не могу понять почему вылетает данная ошибка и не происходит выборка из БД?
PHP:
$query = ("SELECT * FROM orders WHERE email='$em'");
правильно ли выбираю строки из БД по mail?
 

Фанат

oncle terrible
Команда форума
никто не знает этого.
мы не видим запроса, который ты отправляешь в базу.
 

ppbinag

Новичок
PHP:
$query = ("SELECT * FROM orders WHERE email='$em'");
Может конечно я не правильно понимаю, а это разве не запрос к таблице?
 

Yaponchick

Новичок
ppbinag
Лично для меня, это строка текста с переменной внутри кавычек и скобок ;)
 

Фанат

oncle terrible
Команда форума
Нет, это не запрос. Это РНР код, который присваивает переменной $query результат некоторого выражения.
Результат будет всегда разный, в зависимости от участвующих в выражении операндов.
не зная операндов мы не можем знать и конечное содержимое запроса.
 

ppbinag

Новичок
Если можно пример, как из таблицы например orders (имеет значения id, email, price) сделать запрос и выбрать строки с заданным email, соответственно ввести значения их id и price ?
 

Фанат

oncle terrible
Команда форума
ppbinag
тебе надо научиться разделять два понятия:
SQL запросы и
PHP код.

Это разные вещи.
Если тебя интересует запрос - работай напрямую с базой, без РНР.
после того, как получишь интересующий тебя запрос, и убедишься, что он работает - переходи к составлению этого запроса с помощью РНР.
понятно?
 

ppbinag

Новичок
Вроде бы все делаю так... но почему для foreach выскакивает ошибка?
 

Фанат

oncle terrible
Команда форума
мы не знаем, почему для foreach выскакивает ошибка
я объяснял - почему мы не знаем.

код с переменными - это как примеры в школе.
PHP:
x = y + 2
ты можешь ответить, чему равен X, если не знаешь, какое значение имеет Y?
Вот так же и мы не можем ответить, почему у тебя инвалид.

если знать входящие данные - тогда можно ответить.
это от тебя и требуется - проверять входящие данные на каждом этапе.
 

ppbinag

Новичок
Будем пробывать, о результате отпешусь, я так понимаю у меня нет данных еще в
PHP:
$result = mysql_query($query)
 

ppbinag

Новичок
PHP:
$email = $em['email']; 
$query = "SELECT * FROM `orders` WHERE email='$email'";
$res = mysql_query($query);
while($row = mysql_fetch_array($res))
{
echo "Номер: ".$row['id']."<br>\n";
echo "Имя: ".$row['name']."<br>\n";
echo "Имя: ".$row['email']."<br>\n";
echo "Фамилия: ".$row['price']."<br><hr>\n";
}
?>
Сделал выборку так и все заработало, оказалось проще чем я думал, спасибо за информацию) Да можно попутно вопрос, что бы вы посоветовали по поводу изучения PHP и MySQL из книг или других ресурсов с примерами?) Чтобы в следующий раз не задавать глупых вопросов...
 

Фанат

oncle terrible
Команда форума
Таких вещей нигде не объясняют.
так что спрашивай
 

Фанат

oncle terrible
Команда форума
впрочем, нет.
http://phpfaq.ru/debug
по этой ссылке написано, что надо было делать с твоим первым кодом.
который был в принципе правильный, но с опечатками
 
Сверху