[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите с поиском ошибки в запросе
zyurik
Вот какая проблема, 3 сутки не сплю, авторизация работает через бд, на ура. есть глобальная переменная, $userid определяется через сессию.
Выдает ошибку: 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 'Resource id #6' at line 1

при вводе пользователя UFPS все ок, все остальные вызывают ошибку ранее описанную, по выборке по бд, а имено в строке $result = mysql_query("SELECT * FROM users WHERE user='userid'");

Вот код:
страница сессии:
session_start();
session_register("auth");

session_register("userid");
$auth=1;
$userid="$PHP_AUTH_USER";

Страница проверки прав доступа у UFPS полный у остальных userid:
<?
include ("config.inc.php"); //Здесь все коннекты к БД
$link = mysql_connect($dbhost, $dbuser, $dbpasswd);
mysql_select_db($dbname);
if (!$link)
{
exit ("<P>В настоящий момент сервер базы данных
не доступен, поэтому корректное отображение
страницы невозможно.</P>"
);
}
@mysql_query ("SET NAMES `cp1251`");
if ($userid=="UFPS")
{
$result = mysql_query("SELECT * FROM users WHERE comment!='' ORDER BY comment"); // это работает!!!!!!
}
else
{
$result = mysql_query("SELECT * FROM users WHERE user='$userid'"); // ошибка вот здесь, но в чем не пойму??????????
$res_sql = mysql_query($result);
if(!$res_sql)
{
echo "Возникла ошибка - ".mysql_error()."<br>";
echo ("$res_sql");
echo ("$user");
exit();
}
}

echo "<table border=1>\n";
echo "<tr><td><strong>Наименование почтамта</strong></td></tr>\n";

while ($myrow = mysql_fetch_row($result)) // а вот в это сроке ошибку дает в браузере описанную ранее.
{
printf("<tr><td><a href='$vib_poch'>%s</a></td></tr>\n", $myrow[10]);
}
echo "</table>\n";



структура бд:
user :varchar(16);
myrow[10] = varchar(250);



Спустя 1 час, 55 минут, 10 секунд (12.03.2010 - 01:47) Gabriel написал(а):
ет что за ужаСть? зачем запихивать mysql_query в другой mysql_query?

Спустя 1 час, 13 минут, 27 секунд (12.03.2010 - 03:01) qpayct написал(а):
ану марш на курсы Твина, быстро!

Спустя 17 часов, 29 минут, 23 секунды (12.03.2010 - 20:30) zyurik написал(а):
Цитата (Gabriel @ 11.03.2010 - 22:47)
ет что за ужаСть? зачем запихивать mysql_query в другой mysql_query?

где? там страница с кодом коряво почему-то отобразилась
это первая:
session_start();
session_register("auth");

session_register("userid");
$auth=1;
$userid="$PHP_AUTH_USER";
а все что ниже другая страница, и посмотрите ремарки в них пояснения.
И не надо сразу пихать, прошу помощи, а не посылов на х............

И можно указать в цитатах где по Вашему я 2 раза запихил, или ваша компетенция в вопросах php ставится под угрозу, если не умете пользоваться простыми функциями форума.

Спустя 5 минут, 20 секунд (12.03.2010 - 20:35) zyurik написал(а):
Цитата (qpayct @ 12.03.2010 - 00:01)
ану марш на курсы Твина, быстро!

А ВАМ лично, не можешь помочь, не флуди, новичкам в php надо помогать, на delphi я все, что угодно могу навоять, и все кто обращается помогаю.........
Лично к Вам не обращался, а посылать куда-то людей не стоит, а нужно по пунктам разъяснить, что и где, а то я тоже послать могу....

Спустя 9 минут, 16 секунд (12.03.2010 - 20:45) zyurik написал(а):
qpayctА ВАМ лично, не можешь помочь, не флуди, новичкам в php надо помогать, на delphi я все, что угодно могу навоять, и все кто обращается помогаю.........
Лично к Вам не обращался, а посылать куда-то людей не стоит, а нужно по пунктам разъяснить, что и где, а то я тоже послать могу....
Повторюсь, ВЫ меня сильно обидели, надеялся на поддержку, а наткнулся на вилы. Форумы для чего, общения понтовых чуваков и обкакивания "лохов"...
или для помощи незнающим и страждущим....

Спустя 24 минуты, 11 секунд (12.03.2010 - 21:09) qpayct написал(а):
zyurik, ну вот ты обиделся, а я ведь по доброму тебя направил... почему ты в упор этого не видишь?

Спустя 37 минут, 11 секунд (12.03.2010 - 21:46) zyurik написал(а):
Цитата (qpayct @ 12.03.2010 - 18:09)
zyurik, ну вот ты обиделся, а я ведь по доброму тебя направил... почему ты в упор этого не видишь?

Ну наверное выражусь грубо, "а рылом ткунуть нельзя". Теорию я прочел, а вот на практике не получается, за этим сюда и пришел.
опытным путем выяснено, что без этого не авторизуется пользователь:
@mysql_query ("SET NAMES `cp1251`"); так как установки на серваке latin 1,
а где ошибка не вижу хоть убей.

Спустя 4 минуты, 56 секунд (12.03.2010 - 21:51) qpayct написал(а):
rolleyes.gif
а помогает?

Спустя 3 минуты, 40 секунд (12.03.2010 - 21:54) zyurik написал(а):
Цитата (qpayct @ 12.03.2010 - 18:51)
rolleyes.gif
а помогает?

авторизация работает, а вот определение прав доступа нет именно в строке:
$result = mysql_query("SELECT * FROM users WHERE user='$userid'"), толи переменные не совпадают или еще, что, я уже не знаю, 4 сутки пошли, блин ну помогите....
если и правда, кто хочет помочь, напишите в лс дам и адрес сервака и пароль, но только тем кто реально помочь хочет.....

Спустя 6 минут, 22 секунды (12.03.2010 - 22:01) qpayct написал(а):
ну вот ты таки вынудил меня обьяснять то что тебе и без меня должно быть известно из кода ошибки..... с английским проблемы, мусье программист?

1. проверь чему равен userid
2. попробуй так:
$result = mysql_query("SELECT * FROM users WHERE user=". (int)$userid);

Спустя 6 минут, 1 секунда (12.03.2010 - 22:07) zyurik написал(а):
Цитата (qpayct @ 12.03.2010 - 19:01)
ну вот ты таки вынудил меня обьяснять то что тебе и без меня должно быть известно из кода ошибки..... с английским проблемы, мусье программист?

1. проверь чему равен userid
2. попробуй так:
$result = mysql_query("SELECT * FROM users WHERE user=". (int)$userid);

$result = mysql_query("SELECT * FROM users WHERE user=". (int)$userid);
я только начал изучать php, но мне кажется, что user=" вот эта кавычка закроет запрос?

и в дополнение $userid не может быть integer т.к. выше я показал, что $userid="$PHP_AUTH_USER";

Спустя 3 минуты, 6 секунд (12.03.2010 - 22:10) qpayct написал(а):
тогда напиши так
$result = mysql_query("SELECT * FROM users WHERE user=". (int)$userid ."");

Спустя 42 секунды (12.03.2010 - 22:11) zyurik написал(а):
Цитата (qpayct @ 12.03.2010 - 19:10)
тогда напиши так
$result = mysql_query("SELECT * FROM users WHERE user=". (int)$userid ."");

и в дополнение $userid не может быть integer т.к. выше я показал, что $userid="$PHP_AUTH_USER", а ковычки ставятся одинарные а не двойные.....

Спустя 1 минута, 39 секунд (12.03.2010 - 22:12) qpayct написал(а):
ясно, тогда тебе поможет гильётина - 100 пудоф!

Спустя 2 минуты, 25 секунд (12.03.2010 - 22:15) zyurik написал(а):
Это как??? и все таки пишется данное слово наверное так"гильотина", если у Вас ошибки и в предоставление кода, и в русском языке, большое сомнение, что Вы кому-то помочь можете, а только "понты качаете" как говорят.....

Спустя 2 минуты, 56 секунд (12.03.2010 - 22:18) qpayct написал(а):
user posted image

Спустя 4 минуты, 57 секунд (12.03.2010 - 22:23) zyurik написал(а):
Цитата (qpayct @ 12.03.2010 - 19:01)
ну вот ты таки вынудил меня обьяснять то что тебе и без меня должно быть известно из кода ошибки..... с английским проблемы, мусье программист?

1. проверь чему равен userid
2. попробуй так:
$result = mysql_query("SELECT * FROM users WHERE user=". (int)$userid);

Ну вот Вам мисье, проблемы не у меня с английским или русским, а у Вас с понтами....

Спустя 5 минут, 5 секунд (12.03.2010 - 22:28) qpayct написал(а):
да..... вот потому ты и мучаешься 3 дня над пустяковой проблемой.
user posted imageuser posted image

програмист user posted image

Спустя 1 минута, 40 секунд (12.03.2010 - 22:29) zyurik написал(а):
ну где проблема? я уже не вижу, ткни меня в ту строку где я ошибку допустил, дурного, глупого и неразумного ГДЕ?????

Спустя 1 минута, 42 секунды (12.03.2010 - 22:31) qpayct написал(а):
слушай, найми себе няню пускай она и тыкает

Спустя 6 минут, 39 секунд (12.03.2010 - 22:38) zyurik написал(а):
Цитата (qpayct @ 12.03.2010 - 19:31)
слушай, найми себе няню пускай она и тыкает

Нет, давай закончим флудить, я жду ответа от понимающих и знающих тему Людей. На твои нападки ни чем не подкрепленные (опытом, стажем, профессионализмом, и знаниями) отвечать больше не буду, если есть по теме предложения пиши, иначе не надо.

отвечаю в редактирование, не надо флудить, в тему ответ дай, а то я смотрю ты прямо лихой программер, аж две ошибки в твоих предложениях (даже не внося изменения в код, и так видно). И язык подучить было бы не плохо, и русский и php....

Спустя 2 минуты, 6 секунд (12.03.2010 - 22:40) qpayct написал(а):
как скажешь smile.gif твояж тема, как никак

Спустя 44 минуты, 22 секунды (12.03.2010 - 23:24) zyurik написал(а):
Вот какая проблема, 4 сутки не сплю, авторизация работает через бд, на ура. есть глобальная переменная, $userid определяется через сессию.
Выдает ошибку: 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 'Resource id #6' at line 1

при вводе пользователя UFPS все ок, все остальные вызывают ошибку ранее описанную, по выборке по бд, а имено в строке $result = mysql_query("SELECT * FROM users WHERE user='userid'");

Вот код:
страница сессии:
session_start();
session_register("auth");

session_register("userid");
$auth=1;
$userid="$PHP_AUTH_USER";

Страница проверки прав доступа у UFPS полный у остальных userid:

include ("config.inc.php"); //Здесь  все коннекты к БД
$link = mysql_connect($dbhost, $dbuser, $dbpasswd);
mysql_select_db($dbname);
if (!$link)
{
exit ("<P>В настоящий момент сервер базы данных
не доступен, поэтому корректное отображение
страницы невозможно.</P>"
);
}
@mysql_query ("SET NAMES `cp1251`");
if ($userid=="UFPS")
{
$result = mysql_query("SELECT * FROM users WHERE comment!='' ORDER BY comment"); // это работает!!!!!!
}
else
{
$result = mysql_query("SELECT * FROM users WHERE user='$userid'"); // ошибка вот здесь, но в чем не пойму??????????
$res_sql = mysql_query($result);
if(!$res_sql)
{
echo "Возникла ошибка - ".mysql_error()."<br>";
echo ("$res_sql");
echo ("$user");
exit();
}
}

echo "<table border=1>\n";
echo "<tr><td><strong>Наименование почтамта</strong></td></tr>\n";

while ($myrow = mysql_fetch_row($result)) // а вот в это сроке ошибку дает в браузере описанную ранее.
{
printf("<tr><td><a href='$vib_poch'>%s</a></td></tr>\n", $myrow[10]);
}
echo "</table>\n";



структура бд:
user :varchar(16);
myrow[10] = varchar(250);

Спустя 1 минута, 11 секунд (12.03.2010 - 23:25) qpayct написал(а):

 ! 

М
user posted image
sergeiss
Предупреждение за флуд (пустое сообщение) в тематическом разделе.

Спустя 42 минуты, 22 секунды (13.03.2010 - 00:08) sergeiss написал(а):
Цитата (zyurik @ 13.03.2010 - 00:24)
$result = mysql_query("SELECT * FROM users WHERE user='$userid'"); // ошибка вот здесь, но в чем не пойму??????????

Замени эти строки на
$sql = "SELECT * FROM users WHERE user='$userid'";
echo $sql.'<br>';
$result = mysql_query( $sql );

И посмотри, что же на самом деле у тебя содержится в запросе!!! Или кто-то должен проявить телепатию и догадаться, что же у тебя там в БД творится? smile.gif

И еще. Используй тэги оформления кода! Сейчас я это сделаю, но впредь делай сам.

Плюс к этому - (пока устное) предупреждение о том, что теме надо давать осмысленное название (согласно Правил форума http://phpforum.ru/index.php?act=boardrules). Тему меняю с " Помагите пожалуйста, писал в другой ветке, там не помогли" на "Помогите с поиском ошибки в запросе, сам не могу найти".

И вообще. Это тема для раздела "PHP + SQL" smile.gif (переношу в этот раздел)

PS. И заодно я объединяю 2 темы одного автора. Высказанное мной предупреждение распространяется и на создание одной темы во множестве экземпляров. Это также противоречит Правилам форума.

PPS. Я тут сидел, "вкуривал", но так и не понял, что делают, по мнению автор темы, строки
session_register("auth");

session_register("userid");
$auth=1;
$userid="$PHP_AUTH_USER";

Спустя 32 минуты, 5 секунд (13.03.2010 - 00:40) Gabriel написал(а):
zyurik
Цитата
где? там страница с кодом коряво почему-то отобразилась


$result = mysql_query("SELECT * FROM users WHERE user='$userid'");
$res_sql = mysql_query($result);

ЗЫ. переменные в двойные кавычки без надобности брать ненужно

Спустя 17 минут, 51 секунда (13.03.2010 - 00:58) zyurik написал(а):
Спасибо за ответ и помощь в оформлении, но не помогло, переменная $userid выводится правильно, какая информация о БД нужна? помогите, правда не знаю где искать. Выводит вот этот запрос: SELECT * FROM users WHERE user='urup' . есть подозрения, что с кодировкой, что то не то, т.к. urup есть в бд, но без этой строчки @mysql_query ("SET NAMES `cp1251`"); не логинется вообще под любыми логинами, хотя на этом сервере стоит ftp сервер и к базе пользователей ftp я привязался, чтобы лишнюю бд и таблицу не создавать.
вот страница авторизации целиком:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta
http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>
Закрытая зона</title>
</head>
<?php

include("incl/top.php");
include ("config.inc.php");
?>
<p><strong>
Авторизация пользователя</strong></p><br/>
<form
name="1" action="" method="post">
Имя пользователя:</br>
<input
name="PHP_AUTH_USER" type="text" value=""> <br/>
Пароль: </br>
<input
name="PHP_AUTH_PW" type="password" value=""> <br/></br>
<input
name="do" type="submit" value="Войти">
</form>
<?php

if(!isset($PHP_AUTH_USER))
// пользователь неизвестен
{
//echo ("Пользователь в БД не найден");
exit();
}
else
// пользователь известен, неизвестен пароль
{
// введенный пароль
$PHP_AUTH_PW = md5($PHP_AUTH_PW);
$password = "$PHP_AUTH_PW";
// просмотр базы для получения реального пароля
$link = mysql_connect($dbhost, $dbuser, $dbpasswd);
mysql_select_db($dbname);
$result=mysql_query("SELECT password, idpocht FROM users WHERE user='$PHP_AUTH_USER'");
$row=mysql_fetch_array($result);
// проверка
if ($row==NULL) // пользователя с таким именем нет в БД, выходим
{
echo("Пользователя с таким именем нет в БД");
exit();
}
else // пользователь с таким именем есть в БД, проверка пароля
{
$real_password="$row[password]";
if ($real_password!=$password)
{
echo("Неверный пароль");
exit();
}
else
{
// Здесь открытие сессии и определение переменной $userid
session_start();
session_register("auth");
session_register("userid");
$auth=1;
$userid="$PHP_AUTH_USER";
header("Location: index_log.php");
}
}
}

?>
<body>
</body>
</html>



вот index_log.php

<? include("incl/log.php");?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta
http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>
Закрытая зона</title>
</head>
<?php

include("incl/top.php");?>
<a
href="buh.php">Бухгалтерский учет</a></br></br>
<a
href="teh.php">Техника</a>
<body>
</body>
</html>



вот buh.php:
<? include("incl/log.php");?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta
http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>
Закрытая зона</title>
</head>
<?php

include("incl/top.php");?>
<p><strong>
Бухгалтерский учет</strong></p>
<a
href="buh_reestr.php">Реестры оплаты</a></br></br>
<body>
</body>
</html>



вот buh_reestr.php:

<? include("incl/log.php");?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta
http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>
Закрытая зона</title>
</head>
<?php

include("incl/top.php");?>
<a
href="buh.php">Бухгалтерский учет</a><strong> Реестры оплаты</strong>
<p>
Выберите почтамт</p>
<?

include ("config.inc.php");
echo ("$userid");// здесь пишет юзера правельно

/*Подключение к бд*/

$link = mysql_connect($dbhost, $dbuser, $dbpasswd);
mysql_select_db($dbname);
if (!$link)
{
exit ("<P>В настоящий момент сервер базы данных
не доступен, поэтому корректное отображение
страницы невозможно.</P>"
);
}
@mysql_query ("SET NAMES `cp1251`");
if ($userid=="UFPS")
{
$result = mysql_query("SELECT * FROM users WHERE comment!='' ORDER BY comment");
}
else
{

$sql = "SELECT * FROM users WHERE user='$userid'";
echo ($sql.'</br>');
$result = mysql_query($sql);// заменил не погло
$res_sql = mysql_query($result);
if(!$res_sql)
{
echo "Возникла ошибка - ".mysql_error()."<br>";
echo ("$res_sql");
echo ("$user");
exit();
}
}


echo "<table border=1>\n";
echo "<tr><td><strong>Наименование почтамта</strong></td></tr>\n";

while ($myrow = mysql_fetch_row($result))
{
printf("<tr><td><a href='$vib_poch'>%s</a></td></tr>\n", $myrow[10]);
echo ("$user"." "."$userid");
}
echo "</table>\n";
?>
<body>
</body>
</html>



если еще какие данные нужны, предоставлю, но ради бога помогите...

Спустя 4 минуты, 37 секунд (13.03.2010 - 01:02) zyurik написал(а):
PPS. Я тут сидел, "вкуривал", но так и не понял, что делают, по мнению автор темы, строки
session_register("auth"); //регистрация переменных
session_register("userid");
$auth=1; // авторизовался "Да"
$userid="$PHP_AUTH_USER"; // под каким логином

авторизацию сделал, через открытие сессии, $PHP_AUTH_USER вот это он теряет, вот log.php

<? $auth=0;
session_start();
if ($auth!=1)
{echo ("Вы неавторизованны доступ запрещен! Для авторизации нажмите "."<a href='index.php'>сюда.</a>");

exit;} ?>

Спустя 1 час, 9 минут, 19 секунд (13.03.2010 - 02:12) DedMorozzz написал(а):
Цитата
$sql = "SELECT * FROM users WHERE user='$userid'";
пораставляй кавычки. Запрос простой и составлен верно. вобщем раставь кавычки и глянь.
по типу: FROM `users`...и так далее
Кроме того что под "не работает подразумеваеться. У тя стоит ИФ. сработает только 1 запрос. если 1й работает, то 2й - очевидно, что нет. Иль в чём выражаеться "не рабочесть"

Спустя 7 часов, 25 минут, 36 секунд (13.03.2010 - 09:37) zyurik написал(а):
Ну да, я с этого и начал, ошибку выдает:
kamSELECT * FROM users WHERE user='kam'
Возникла ошибка - 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 'Resource id #6' at line 1
но когда логин UFPS все ок.

После поставки кавычек ошибка изменилась на : Возникла ошибка - Query was empty

Спустя 1 час, 22 минуты, 3 секунды (13.03.2010 - 10:59) DedMorozzz написал(а):
Цитата
Query was empty
как думаешь, что это значит. Подставь передаваемые значения в пхпмуадмин и попробуй выполнить сей запрос. Естесно с кавычками.
Ах да, и покажи как ты их ставишь, а то мало ли.

Спустя 8 часов, 58 минут, 53 секунды (13.03.2010 - 19:58) zyurik написал(а):
SELECT * FROM users WHERE user='kam' в phpmyadmin, запрос работает правильно, выбирается одна строка из базы где user = kam

Спустя 21 час, 26 минут, 21 секунда (14.03.2010 - 17:24) Guest написал(а):
нашел!!!!

	$res_sql = mysql_query($result); 
if(!$res_sql)
{
echo "Возникла ошибка - ".mysql_error()."<br>";
echo ("$res_sql");
echo ("$userid");
exit();
}

вот это лишнее, и напутал с кодировками и это было основное.
Быстрый ответ:

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