Ошибка mysql запроса

daniyorik

Новичок
Здравствуйте выдает ошибку:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM aib_post LEFT JOIN aib_users ON aib_users.user_id = '' LEFT JOI' at line 15
я понял что синтаксическая ошибка на 15 линии, только как ее исправить подскажите пожалуйста
Вот сам запрос:

"SELECT
aib_post.id,
aib_post.title,
img,
text,
date,
id_town,
price,
aib_post.confirm,
is_actual,
time_over,
aib_users.name AS uname,
aib_users.email,
aib_categories.name AS cat
FROM
aib_post
LEFT JOIN aib_users ON aib_users.user_id = '$user'
LEFT JOIN aib_categories ON aib_categories.id = aib_post.id_categories
WHERE aib_post.id_user = '$user'
ORDER by date DESC
";
 

PavelDAS

Новичок
Запрос нормальный. Такая ошибка будет, если переменная $user пустая. Подставить вместо неё, например, 1 и посмотри результат.
------
Можно до запроса проверять:
PHP:
if ($user == '') $user = 0;
 

daniyorik

Новичок
Запрос нормальный. Такая ошибка будет, если переменная $user пустая. Подставить вместо неё, например, 1 и посмотри результат.
------
Можно до запроса проверять:
PHP:
if ($user == '') $user = 0;
Спасибо, ошибка решена, оказало я неправильно вбил название строки, в общем глупость сотворил
 

daniyorik

Новичок
Запрос нормальный. Такая ошибка будет, если переменная $user пустая. Подставить вместо неё, например, 1 и посмотри результат.
------
Можно до запроса проверять:
PHP:
if ($user == '') $user = 0;
Правда вопрос есть такой, а почему $user может быть пустым?
Для справки $user это переменная включающая в себя данные сессии о юзере, получается нужно чтобы выдало все посты конкретного юзера,
Код вот такой:
$text = get_p_mess($user['user_id']);
print_r($text); - массива в итоге нет, после принта!

Проверял в mysql запрос, выдает все правильно если вбиваешь числовое id юзера, следовательно не тянет поле из сессии, как решить такое?

get_p_mess - это функция с запросом, принимающая значение $user, там описан цикл, и формирование массива данных
 

daniyorik

Новичок
Запрос нормальный. Такая ошибка будет, если переменная $user пустая. Подставить вместо неё, например, 1 и посмотри результат.
получается тянутся данные ID с сессии но не тянутся с переменной, соответственно переменная $user пустая, в общем в этом и ошибка, только вот думаю почему же так?
 

daniyorik

Новичок
Все всем спасибо, решил проблему,
Само решение:
Приписал юзер ID константу в функцию проверки авторизации пользователя,
Затем в функцию вывода данных из таблицы конкретного поста, которая принимает значение id user, приписал эту самую константу, нормально вывело массив))
если интересно само решение с исходниками, то пишите,
опишу процесс)))
 

Фанат

oncle terrible
Команда форума
Такая ошибка будет, если переменная $user пустая.
Не надо писать ерунды.
Во-первых, ошибка, вызванная полем user, будет совсем не такая.
Во-вторых, в этом запросе неопределенная переменная никакой ошибки не выдаст в принципе
 

daniyorik

Новичок
Опиши. На баше скукота одна, а тут явно что-то годное.
В общем в моем коде в файле functions.php существует функция проверки авторизации пользователя, в нее передаются данные с сессий, такие как username,user_id, login, к каждой из них я приписал define,
В случае с выборки постов с баз данных, я решил создать функцию, которая бы выбирала с таблицы посты конкретного пользователя, принимая значения user_id,
ну далее цикл for, который на каждой итерации выдает посты пользователя,
и в значения функции добавил define, выглядит это так:
$text = get_p_mess(USER_ID);
ну и дальше уже стыковал html теги с php тегами,
в итоге получилось связать красивенький шаблон, с выводом данных из таблиц, по конкретному пользователю
 

daniyorik

Новичок
Опиши. На баше скукота одна, а тут явно что-то годное.
Вот код функции вывода таблицы постов,

function get_p_mess($user){

$sql = "SELECT
aib_post.id,
aib_post.title,
img,
text,
date,

price,
aib_post.confirm,
is_actual,
time_over,
aib_users.username AS uname,
aib_users.email,
aib_categories.name AS cat
FROM
aib_post
LEFT JOIN aib_users ON aib_users.user_id = '$user'
LEFT JOIN aib_categories ON aib_categories.id = aib_post.id_categories
WHERE aib_post.id_user = '$user'
ORDER by date DESC";
$result = mysql_query($sql) or die(mysql_error());
if(!$result) {
exit(mysql_error());
}

if(mysql_num_rows($result) == 0) {
return FALSE;
}

$row = array();

for($i = 0;mysql_num_rows($result) > $i;$i++) {
$row[] = mysql_fetch_array($result,MYSQL_ASSOC);
}

return $row;
}
 
Сверху