Войти

Показать полную графическую версию : [решено] Опять с выборкой и все с тем что и раньше


Страниц : [1] 2

dima1981
04-09-2008, 14:31
Вообщем, кто может посмотреть и сказать, чем эти два файла отличаются

<?
$db = mysql_connect("localhost","root","...");
mysql_select_db("rp" ,$db);
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
echo $HTTP_POST_VARS['cd'];
$sql = mysql_query ("SELECT * FROM og", $db);
while ($abc = mysql_fetch_row($sql))
{
echo("$abc[1]|$abc[2]|$abc[3]|$abc[4]");
}
mysql_close($db);
?>

в этом всё клёво показывает данные из базы на отлично, теперь этот

<?
$db = mysql_connect("localhost","root","...");
mysql_select_db("rp" ,$db);
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
$HTTP_POST_VARS['cd'];
echo $HTTP_POST_VARS['cd'];
$sql = mysql_query ("SELECT * FROM og 'og' where co='$co', and cd='$cd', $db", $db);
while ($abc = mysql_fetch_row($sql)
{
echo("$abc[1]|$abc[2]|$abc[3]|$abc[4]");
}
mysql_close($db);
?>

как и первый только не показывает базу, суда приходят переменные или как то так это называется нормально, прописываю тут $HTTP_POST_VARS['co']; $HTTP_POST_VARS['cd']; и перед ними echo для примера и чтоб показал, что с приходом получается, браузер показывает, то что передаю, но вот как дальше по коду идти так онлине и всё тут

timon4ik
04-09-2008, 15:42
но вот как дальше по коду идти так онлине и всё тут »
Уже в который раз вы жалуетесь на ошибку в коде а саму ее не приводите, говорите только о каком-то онлине, хотя в вашем случае - это лишь указатель на строку кода в которой у вас ошибка.

Например:

Fatal error: _здесь_сообщение_об_ошибке_ in _имя_файла_с_ошибкой_ on line номер_строки_с_ошибкой

Так приведите же сообщение об ошибке а не только "онлине"

timon4ik
04-09-2008, 16:00
dima1981,
А ошибка у вас вот:
$sql = mysql_query ("SELECT * FROM og 'og' where co='$co', and cd='$cd', $db", $db);
Подчеркнутое - убрать.

dima1981
04-09-2008, 16:01
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in C:\apache\localhost\www\zg.php on line 8
это по второму коду timon4ik,

это с while что то, дальше него не выполняет

timon4ik
04-09-2008, 16:04
dima1981,
Ответ уже дал :)

это с while что то »
Это не с while, приблизительный перевод ошибки: "Используемый аргумент функции mysql_fetch_row() не является корректным MySQL-запросом"

dima1981
04-09-2008, 16:27
про что и разговор, какие он может воспринимать аргументы не могу понять в упор, подскажите, родной вы к нам timon4ik, очень нужно...

на гугле перевод делал и он мне так перевел, что некоректно мол так к mysql или к php я так вообщем и не понял к кому но обращаться, повторите говорит попытку позднее )
только запарился в хлам и что удивительно в форумах и в интернете по этому такое ощущение, что информации совсем нет, обычно, там какая то тема лбычная т.е. распостраненная, везде и во многих экземплярах, но это как будто все знают, или как будто только пара видов запросов всех интересует, в полном недоумении я короче.

timon4ik
04-09-2008, 16:40
Вы присваиваете значению переменной - запрос:
$sql = mysql_query ("SELECT * FROM og 'og' where co='$co', and cd='$cd', $db", $db);

Дальше используете переменную $sql в качестве аргумента функции mysql_fetch_row()
while($abc = mysql_fetch_row($sql)) - тут кстати вы забыли закрыть вторую скобку

Выполнение программы доходит до вызова функции mysql_fetch_row(), видит что её аргументом является некорректный запрос (тот что в значении переменной $sql), и естественно возвращает ошибку.

Исправить нужно следующее:

Неверно:
$sql = mysql_query ("SELECT * FROM og 'og' where co='$co', and cd='$cd', $db", $db);
Верно:
$sql = mysql_query ("SELECT * FROM og where co='$co', and cd='$cd'", $db);

Неверно:
while($abc = mysql_fetch_row($sql)
Верно:
while($abc = mysql_fetch_row($sql))

Вроде все объяснил, понятнее уже некуда :)

dima1981
04-09-2008, 16:57
не получается короче
чего трудно так, вот говорю если сделать как вы говорите timon4ik, т.е. взять второй код и тех двух вначале, переставить там те строки, которые вы уважаемый говорите, что не верны и прописать там те, которые вы говорите верны, браузер покажет Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in C:\apache\localhost\www\zg.php on line 8

timon4ik
04-09-2008, 17:12
Еще раз приведите получившийся код с учетом моих исправлений.

dima1981
04-09-2008, 17:22
<?
$db = mysql_connect("localhost","root","123");
mysql_select_db("rp" ,$db);
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
$HTTP_POST_VARS['cd'];
$sql = mysql_query ("SELECT * FROM og where co='$co', and cd='$cd', $db");
while ($abc = mysql_fetch_row($sql))
{
echo("$abc[1]|$abc[2]|$abc[3]|$abc[4]");
}
echo "</table>";
mysql_close($db);
?>

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in C:\apache\localhost\www\zg.php on line 8

timon4ik
04-09-2008, 17:26
dima1981,

Вы написали
$query = mysql_query ("SELECT * FROM og where co='$co', and cd='$cd', $db");

А я говорил так:
$query = mysql_query ("SELECT * FROM og where co='$co', and cd='$cd'", $db);

Закрывающие двойные кавычки на на своем месте были.

dima1981
04-09-2008, 17:29
Выполнение программы доходит до вызова функции mysql_fetch_row(), видит что её аргументом является некорректный запрос (тот что в значении переменной $sql), и естественно возвращает ошибку. »

каким образом он тут корректно воспринимает
mysql_query("SET CHARACTER SET 'utf8'");
echo $HTTP_POST_VARS['cd'];
$sql = mysql_query ("SELECT * FROM og", $db);
while ($abc = mysql_fetch_row($sql))
?

$query = mysql_query ("SELECT * FROM og where co='$co', and cd='$cd'", $db); »
и так Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in C:\apache\localhost\www\zg.php on line 8

timon4ik
04-09-2008, 17:35
dima1981,
хорошо, тогда попробуйте вместо
$sql = mysql_query ("SELECT * FROM og where co='$co', and cd='$cd'", $db);
написать
$sql = mysql_query ("SELECT * FROM og where co='".$_POST['co']."', and cd='".$_POST['cd']."'", $db);

Так должно заработать.

dima1981
04-09-2008, 17:38
и произойдет выборка из базы, ура!
щас попробую )

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in C:\apache\localhost\www\zg.php on line 8

Coutty
04-09-2008, 17:41
Вот вы пишете в коде:
$HTTP_POST_VARS['cd'];
echo $HTTP_POST_VARS['cd'];
$sql = mysql_query ("SELECT * FROM og 'og' where co='$co', and cd='$cd', $db", $db); »
А для чего первые две строки? Ну да, выводит, хорошо. А переменные $co и $cd откуда берутся?
Из приведённого кода видно, что они нигде не инициализируются, а значит равны NULL.

Попробуйте составить запрос в переменной, а потом его отправить. Примерно так:
$query = "SELECT * FROM og where co='$co', and cd='$cd'";
echo $query;
$sql = mysql_query($query);

Полагаю, что echo $query выведет такую строку: SELECT * FROM og where co='', and cd=''.
Такой запрос вряд ли можно назвать корректным.

timon4ik
04-09-2008, 17:43
А переменные $co и $cd откуда берутся? »
Вот именно, на это я сначала и не обратил внимание, поэтому нужно так:
$sql = mysql_query ("SELECT * FROM og where co='".$_POST['co']."', and cd='".$_POST['cd']."'", $db);

dima1981
04-09-2008, 17:49
от того что эти переменные увижу я в браузере, после прописывания $query = "SELECT * FROM og where co='$co', and cd='$cd'";
echo $query; обработчику станет не чуть не легче их воспринимать и это не значит что функция станет фосприниматься как корректная и т.д.

XCodeR
04-09-2008, 17:49
dima1981, повторяю свою просьбу еще раз: оформляйте куски кода тэгами [ CODE ], [ HMTL ] и [ PHP ] (см. кнопки на текстбоксом), ибо читать Ваши вопросы и пытаться помочь - очень сложно.

dima1981
04-09-2008, 17:51
<?
$db = mysql_connect("localhost","root","123");
mysql_select_db("rp" ,$db);
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
$HTTP_POST_VARS['cd'];
$query = "SELECT * FROM og where co='$co', and cd='$cd'";
echo $query;
$abc = mysql_query($query)

echo("$abc[1]|$abc[2]|$abc[3]|$abc[4]");

echo "</table>";
mysql_close($db);
?>

Parse error: syntax error, unexpected T_ECHO in C:\apache\localhost\www\zg.php on line 11

Coutty
04-09-2008, 17:52
от того что эти переменные увижу я в браузере, после прописывания $query = "SELECT * FROM og where co='$co', and cd='$cd'";
echo $query; обработчику станет не чуть не легче их воспринимать и это не значит что функция станет фосприниматься как корректная и т.д. »
Естественно! Вы увидите, что составляется некорректный запрос и сможете исправить его (добавлением $_POST[co] и $_POST[cd]).




© OSzone.net 2001-2012