[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: двойной запрос mysql
shmali
мне надо выбрать из таблицы инфо с 2 параметрами. Вот как я написал:

mysql_query('SELECT * FROM messages WHERE login="$user" AND status="2"');


не работает ... где то я накосячил...



Спустя 6 минут, 21 секунда (29.03.2011 - 01:39) Nikitian написал(а):
Это должно вывести всё, что соответствует вашему запросу.

$result=mysql_query('SELECT * FROM messages WHERE login="'.mysql_real_escape_string($user).'" AND status="2"');
$arr=array();
if(is_resource($result) && mysql_num_rows($result)>0){
while($arr[]=mysql_fetch_assoc($result)){}
}

print_r($arr);

Спустя 4 минуты, 35 секунд (29.03.2011 - 01:43) shmali написал(а):
Спасибо я попробую, если не затруднит подскажите что в моей формулировке не так ,чтоб я понял в чем дело.

Спустя 2 минуты, 38 секунд (29.03.2011 - 01:46) Nikitian написал(а):
В ней не видно как вы получаете данные. Есть подозрение, что там ошибка. Нет экранирования переменной, а что в ней так же неизвестно.
Так же подозреваю, что ошибка может быть в логике sql-запроса, но это не сказать точно, не зная что вам надо и что в базе есть )

Спустя 4 минуты, 51 секунда (29.03.2011 - 01:51) shmali написал(а):
в базе таблица "messages" С полями "login","status","text","from","date"

Вот весь код.

$user = $_SESSION['login'];
$result=mysql_query('SELECT * FROM messages WHERE login="$user" AND status="1"');

{while($myrow=mysql_fetch_array($result))
printf('
<table class="table">
<tr>
<td><br>от: %s</td>
</tr>
<tr>
<td><br>Дата: %s</td>
</tr>
<tr>
<td><br>Текст:<br> %s</td>
</tr>
</table>
'
,$myrow['from'],$myrow['date'],$myrow['text']);

}

Спустя 17 минут, 50 секунд (29.03.2011 - 02:09) waldicom написал(а):
надо или конкатенирвать строку или изначально оборачивать запрос в двойные кавычки.
Т.е. типа
$result=mysql_query("SELECT * FROM messages WHERE `login`='$user' AND `status`='1'");

или
$result=mysql_query('SELECT * FROM messages WHERE `login`="' . $user . '" AND `status`="1"');

И конечно не забывать экранировать переменные

Спустя 18 минут, 21 секунда (29.03.2011 - 02:27) shmali написал(а):
не работает ни так ни этак ....

Спустя 4 минуты, 8 секунд (29.03.2011 - 02:31) Nikitian написал(а):
В чём заключается неработоспособность? Ошибку выдаёт? Какую? Что-то ещё непредвиденное? что? В шарады играть будем или проблему решать?
Подозреваю, что запрос неверно составлен и ничего не возвращает. Но это этого надо знать какие данные в таблице и что необходимо получить.

Спустя 8 минут, 26 секунд (29.03.2011 - 02:40) shmali написал(а):
В первом случае Не выводит ничего но ошибки нету.
Во втором случае выдает ошибку.

вот таблица:

login: Имя пользователя (например Вася)
from: от кого(Например от Феди)
status:1 или 2 (1-Новое сообщение , 2- Старое Сообщение. Изначально 1 потом inc - но это не важно)
date:Дата написания сообщения(12.10.2001)
text:Текст сообщения.

Запрос должен выбрать из таблицы сообщения которые относятся к пользователю "Вася" со статусом 1 то есть новые.

Имя пользователя берется из сессии . Вроде все расписал детально .

Спустя 2 минуты, 39 секунд (29.03.2011 - 02:42) Invis1ble написал(а):
shmali
Цитата
Во втором случае выдает ошибку

какую? Из тебя слова нужно клещами вытаскивать? )

Спустя 1 минута, 2 секунды (29.03.2011 - 02:43) Invis1ble написал(а):
Вобще-то, как я вижу, тут Попов detected =)

Спустя 1 минута, 40 секунд (29.03.2011 - 02:45) Invis1ble написал(а):
Цитата
{while($myrow=mysql_fetch_array($result))
printf('
<table class="table">
<tr>
<td><br>от: %s</td>
</tr>
<tr>
<td><br>Дата: %s</td>
</tr>
<tr>
<td><br>Текст:<br> %s</td>
</tr>
</table>
',$myrow['from'],$myrow['date'],$myrow['text']);

}

А что это за бред с фигурными скобками?

Спустя 14 секунд (29.03.2011 - 02:45) shmali написал(а):
Сорри это моя вина я там промазал и 1 символ упустил . Нету ошибки ни в 1 ни во втором .
просто ничего не выводит и не понятно почему вроде все правильно .....

Спустя 1 минута, 33 секунды (29.03.2011 - 02:47) shmali написал(а):
Цитата (Invis1ble @ 28.03.2011 - 23:45)
Цитата
{while($myrow=mysql_fetch_array($result))
printf('
<table class="table">
<tr>
<td><br>от: %s</td>
</tr>
<tr>
<td><br>Дата: %s</td>
</tr>
<tr>
<td><br>Текст:<br> %s</td>
</tr>
</table>
',$myrow['from'],$myrow['date'],$myrow['text']);

}

А что это за бред с фигурными скобками?

Этого нету там . Я просто пробовал if (); и на момет написания сообщения выделил больше чем надо еще раз сорри

Спустя 32 секунды (29.03.2011 - 02:47) Invis1ble написал(а):
добавь or die(mysql_error()) после mysql_query()

Спустя 8 минут, 11 секунд (29.03.2011 - 02:56) shmali написал(а):
Без изменений..
я думаю что проблема в запросе ,если сделать вот так:


mysql_qery('SELECT * FROM messages WHERE status="1"');


выводит все сообщения со статусом 1, теперь надо выводить все со статусом 1 и с логином $user.

Спустя 7 минут, 53 секунды (29.03.2011 - 03:03) Invis1ble написал(а):
А я думаю, что ты не следуешь советам, которые тебе дают.
$query =
"SELECT *
FROM `messages`
WHERE `login` = '"
. mysql_real_escape_string($user) . "' AND `status` = '2'";

$res = mysql_query($query) or die(mysql_error());

$data = array();

if (mysql_num_rows($res) > 0)
while ($data[] = mysql_fetch_assoc($res)) {}

var_dump($data);

Напиши, что выдаст этот код.

Спустя 4 минуты, 50 секунд (29.03.2011 - 03:08) shmali написал(а):
от:

Дата:

Текст:

от:

Дата:

Текст:

array(3) { [0]=> array(6) { ["id"]=> string(1) "6" ["user"]=> string(6) "shmali" ["status"]=> string(1) "2" ["text"]=> string(19) "Вот второе" ["from"]=> string(8) "shmaliok" ["date"]=> string(10) "2011-03-29" } [1]=> array(6) { ["id"]=> string(1) "7" ["user"]=> string(6) "shmali" ["status"]=> string(1) "2" ["text"]=> string(19) "Вот третье" ["from"]=> string(8) "shmaliok" ["date"]=> string(10) "2011-03-29" } [2]=> bool(false) }

Спустя 7 минут (29.03.2011 - 03:15) Invis1ble написал(а):
$query =
"SELECT *
FROM `messages`
WHERE `login` = '"
. mysql_real_escape_string($user) . "' AND `status` = '2'";

$res = mysql_query($query) or die(mysql_error());

$data = array();

if (mysql_num_rows($res) > 0)
while ($row = mysql_fetch_assoc($res))
$data[] = $row;

все данные в $data.

Спустя 1 минута, 38 секунд (29.03.2011 - 03:17) Invis1ble написал(а):
Насколько я понял, проблема была в двойных кавычках в запросе

Спустя 2 минуты, 36 секунд (29.03.2011 - 03:19) shmali написал(а):

$user = $_SESSION['login'];
$query = "SELECT * FROM `messages` WHERE `login` = '" . mysql_real_escape_string($user) . "' AND `status` = '2'";

$res = mysql_query($query) or die(mysql_error());

$data = array();

if (mysql_num_rows($res) > 0)
while ($data[] = mysql_fetch_assoc($res))

{printf('
<table class="table">
<tr>
<td><br>от: %s</td>
</tr>
<tr>
<td><br>Дата: %s</td>
</tr>
<tr>
<td><br>Текст:<br> %s</td>
</tr>
</table>
'
,$data['from'],$data['date'],$data['text']);

}


То что они в $data я понял , почему они не выводятся как надо ? может я просто не вижу где я ошибся ...

Спустя 5 минут, 13 секунд (29.03.2011 - 03:25) Invis1ble написал(а):
shmali
Ты вобще видишь, чем отличается этот код
if (mysql_num_rows($res) > 0)
while ($data[] = mysql_fetch_assoc($res)) {}

от этого
if (mysql_num_rows($res) > 0)
while ($row = mysql_fetch_assoc($res))
$data[] = $row;

??
Сделай так:
if (mysql_num_rows($res) > 0)
while ($row = mysql_fetch_assoc($res))
printf('
<table class="table">
<tr>
<td><br>от: %s</td>
</tr>
<tr>
<td><br>Дата: %s</td>
</tr>
<tr>
<td><br>Текст:<br> %s</td>
</tr>
</table>
'
,$row['from'], $row['date'], $row['text']);

Спустя 1 минута, 43 секунды (29.03.2011 - 03:26) Invis1ble написал(а):
А вобще, советую тебе пройти эти курсы, потому как ты основных вещей толком не понимаешь и пытаешься прыгнуть выше головы.

Спустя 4 минуты, 55 секунд (29.03.2011 - 03:31) shmali написал(а):
Спасибо большое , все работает и 1000 извинений за нервы и время )) так оно по началу у все было я думаю. И про Попова правда, я по его курсам начал.
Из того что я на форуме прочел ,тут все его недолюбливают )))
Может когда стану специалистом, тоже буду его недолюбливать )))
Пока кроме его курсов мало чего успел выучить.
Еще раз всем спасибо!!!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.