Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: коректность ссылки
Форумы портала PHP.SU » PHP » Программирование на PHP » коректность ссылки

Страниц (1): [1]
 

1. kuller - 27 Января, 2010 - 11:06:25 - перейти к сообщению
подскажите пожалуста почему этот код перестал работать
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $result = mysql_query("SELECT * FROM table WHERE id='$cat'");
  3. if(!$result)
  4. {
  5. echo "error";
  6. }
  7.  

я считаю так, когда оправляю запрос, проверяется перемённая $cat совпадением с id если не сопадает, тогда выводится error.
но почему проверка непроходит правильно?
2. Viper - 27 Января, 2010 - 11:20:24 - перейти к сообщению
а запрос точно ничего не возвращает ?
3. SDR - 27 Января, 2010 - 11:21:09 - перейти к сообщению
1. А я считаю, что астрологов и предсказателей тут нет

2. Я считаю, что error_reporting нужно выставлять в E_ALL, а ошибку базы проверять mysql_error() ом. Неполенитесь, погуглите, если слова где незнакомые. И вот это полезно почитать:
http://www.phpfaq[dot]ru/debug
http://phpclub[dot]ru/detail/article/2002-10-03
4. kuller - 27 Января, 2010 - 11:32:24 - перейти к сообщению
Viper, значение в $cat берётся правильное только с базой не проверяет. забыл добавить что перед запросом написано
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. if(isset($_GET['cat']))
  3. {
  4. $cat = htmlspecialchars($_GET['cat']);
  5. }
  6.  

----
SDR, нет сообщения об ошибке
5. SDR - 27 Января, 2010 - 11:39:20 - перейти к сообщению
kuller пишет:
Viper, значение в $cat берётся правильное только с базой не проверяет. забыл добавить что перед запросом написано
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. if(isset($_GET['cat']))
  3. {
  4. $cat = htmlspecialchars($_GET['cat']);
  5. }
  6.  

----
SDR, причем тут error_reporting ?


при том, что если геткат не иссет, то чему равен кат?
это как версия. при нормальном эрроррепортинге в этом случае будет ворнинг

а вообще вместе с ошибкой выведи текст запроса (надеюсь сам догадаешся как) и mysql_error (см. выше)

-----
маленькое замечание не по теме. подозреваю, что id - integer.. проще было бы $cat = (int)$_GET['cat'];
6. EuGen - 27 Января, 2010 - 11:41:27 - перейти к сообщению
SDR пишет:
если геткат не иссет, то чему равен кат

Прямо заклинание какое-то.
Но автору и правда следует научиться отладке.
7. Phantik - 27 Января, 2010 - 11:52:23 - перейти к сообщению
mysql_query вернет FALSE если запрос не выполнится, и вернет Resurce если выполнится.
а равно $cat id или нет это никого не волнует.
8. kuller - 27 Января, 2010 - 11:54:28 - перейти к сообщению
разобрался почему не работало. в запросе была ошибка
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $result = mysql_query("SELECT * FROM table WHERE id='$cat'");
  3. if(!$result)
  4. {
  5. echo "error";
  6. }
  7.  

проверяю поле id а вытаскиваю все поля, а следует выташить только поле id
---
SDR, спасиб, указал ещё на ошибки Улыбка
9. SDR - 27 Января, 2010 - 11:56:41 - перейти к сообщению
Phantik пишет:
а равно $cat id или нет это никого не волнует.

кстати да, согласен, в этом случае, когда $cat берётся в кавычки, даже при пустом $cat запрос выполнится, если таблица table и поле id в ней существует

но дело не в этом. глянуть на текст ошибки мускула в любом случае стоит, как и стоит уметь писать правильно и отлаживать.
(Добавление)
kuller пишет:
SDR, спасиб, указал ещё на ошибки Улыбка

пожалуйста.. и всё таки ты зря умных советов не слушаешь ))
думаешь на гугл просто так посылают? ;)

CODE (text):
скопировать код в буфер обмена
  1.  
  2. $query = "SELECT * FROM table WHERE id='$cat'";
  3. $result = mysql_query($query);
  4. if(!$result)
  5. {
  6. die ("SQL: $query<br/>Error: ".mysql_error());
  7. }
  8.  


последний раз пишу за тебя, при игноре советов Улыбка
ну. и что выдаёт?
10. Phantik - 27 Января, 2010 - 12:00:55 - перейти к сообщению
2 kuller
А что именно ты проверяешь условием if? Как должен твой код работать правильно?
11. kuller - 27 Января, 2010 - 12:13:14 - перейти к сообщению
SDR пишет:
Phantik пишет:
а равно $cat id или нет это никого не волнует.

кстати да, согласен, в этом случае, когда $cat берётся в кавычки, даже при пустом $cat запрос выполнится, если таблица table и поле id в ней существует

но дело не в этом. глянуть на текст ошибки мускула в любом случае стоит, как и стоит уметь писать правильно и отлаживать.
(Добавление)
kuller пишет:
SDR, спасиб, указал ещё на ошибки Улыбка

пожалуйста.. и всё таки ты зря умных советов не слушаешь ))
думаешь на гугл просто так посылают? ;)
CODE (text):
скопировать код в буфер обмена
  1.  
  2. $query = "SELECT * FROM table WHERE id='$cat'";
  3. $result = mysql_query($query);
  4. if(!$result)
  5. {
  6. die ("SQL: $query<br/>Error: ".mysql_error());
  7. }
  8.  


последний раз пишу за тебя, при игноре советов Улыбка
ну. и что выдаёт?


с верхним постом чёт поторопился, ничего не работает.
ничего не выдаёт...
(Добавление)
Phantik пишет:
2 kuller
А что именно ты проверяешь условием if? Как должен твой код работать правильно?

в данный момент проверяю правильное значение $cat
(Добавление)
SDR пишет:

думаешь на гугл просто так посылают? ;)

я и так в гугле сижу сейчас
12. SDR - 27 Января, 2010 - 12:24:47 - перейти к сообщению
что именно не работает?

твой echo 'error'; работал, а мой die('.....'); не работает?

как именно не работает? что-то хоть выдаёт? в чё в десятый раз установлен error_reporting?
13. JustUserR - 27 Января, 2010 - 12:30:38 - перейти к сообщению
kuller Попробуйте такой код - по идее должен работать как надо
PHP:
скопировать код в буфер обмена
  1. if(isset($_GET['cat'])) {$cat = mysql_real_escape_string($_GET['cat']); }
  2. else {echo "Не передана категория"; exit;}
  3. $result = mysql_query("SELECT * FROM table WHERE id='$cat'");
  4. if(mysql_num_rows($result)<1) {echo "Нет такой категории"; exit; }
  5. else {echo "Все ОК";}
Скорее всего ваша ошибка была в том что вы проверяете условие ресурс result который не может быть false даже если ответа на запрос пустой был
14. kuller - 27 Января, 2010 - 13:22:25 - перейти к сообщению
всем спасибо. а такой код нормальный?
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?php
  3. include ("temp/config.php");
  4. include ("classes/system.php");
  5. $system = new System();
  6. $system->header();
  7. if(isset($_GET['cat']))
  8. {
  9. $cat = mysql_real_escape_string($_GET['cat']);
  10. }else{
  11. echo '<table width="803" height="40" border="0" align="center" id="static">
  12. <tr>
  13. <td align="center">
  14. <div class="nav1">ошибка</div>
  15. <div class="Top">Не передана категория</div>
  16. </td>
  17. </tr>
  18. </table>';
  19. }
  20. if(!preg_match("|^[\d]+$|", $cat))
  21. {
  22. echo '<table width="803" height="40" border="0" align="center" id="static">
  23. <tr>
  24. <td align="center">
  25. <div class="nav1">ошибка</div>
  26. <div class="Top">Неверный формат запроса! Проверьте URL.</div>
  27. </td>
  28. </tr>
  29. </table>';
  30. }
  31. $result = mysql_query("SELECT id FROM table WHERE id='$cat'");
  32. if(!$result)
  33. {
  34. echo '<table width="803" height="40" border="0" align="center" id="static">
  35. <tr>
  36. <td align="center">
  37. <div class="nav1">ошибка</div>
  38. <div class="Top">Возникла ошибка. Скопируйте текст ошибки ниже, и отправте администратору<br /><p>'.mysql_error().'</p></div>
  39. </td>
  40. </tr>
  41. </table>';
  42. }
  43. if(mysql_num_rows($result) > 0)
  44. {
  45. $myrow = mysql_fetch_array($result);
  46.  
  47. }else{
  48. echo '<table width="803" height="40" border="0" align="center" id="static">
  49. <tr>
  50. <td align="center">
  51. <div class="nav1">ошибка</div>
  52. <div class="Top">Раздел, который вы выбрали, не существует</div>
  53. </td>
  54. </tr>
  55. </table>';
  56. }
  57. $system->fotter();
  58. ?>
  59.  

вроде всё работает...
15. JustUserR - 27 Января, 2010 - 14:02:32 - перейти к сообщению
kuller пишет:
Всем спасибо А такой код нормальный?
Теперь нормальный когда вы правильно воспользовались проверкой на false для ресурса ответа базы данных и добавили проверку по mysql_num_rows

 

Powered by ExBB FM 1.0 RC1