За последние 24 часа нас посетили 17853 программиста и 1654 робота. Сейчас ищут 1615 программистов ...

mysql_error() и php

Тема в разделе "PHP и базы данных", создана пользователем EvelRus, 5 мар 2008.

  1. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    Подскажите... можно ли сделать функцию выдирающую НОМЕР ошибки из mysql_error(), что бы подставить СВОЙ ТЕКСТ... например "Произошла ошибка соединения, назмите здесь что бы сообщить о ней администратору". Или "Невозможно вставить запрос... Напишите админу" ну и т.д..
    Если да, то как это реализовать?
    И где можно почитать про коды ошибок sql

    Спасибо!
     
  2. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    mysql_errno()
    кажется так
     
  3. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    а как их обрабатывать???
    PHP:
    1. if (mysql_errno() === '1')
    2. {
    3. ...
    4. }
    Так?
     
  4. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    Спасабо!!
    А сами коды ошибок, где почитать?
     
  5. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
  6. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    Огромное спасибо! )))
     
  7. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    Снова бага :((


    PHP:
    1.  
    2. <?
    3. $query = "SELECT * FROM `question` WHERE moder=1 ORDER BY RAND() LIMIT 0,1";
    4. $sql = @mysql_query($sql) or die(mysql_error() .'-'. mysql_errno());
    5. while($res = mysql_fetch_array($sql))
    6.   {
    7.    echo $res['id'];
    8.   }
    9. ?>
    10.  
    скрипт выдает
    Хотя в phpmyadmin все работает :(
     
  8. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
     
  9. Clone

    Clone Guest

    Нахрена? Чтобы ошибки mysql не сыпались в вывод? Дык они и не будут сыпаться. Получаете только сложности при дебаггинге, которые сами себе и насоздавали.
     
  10. Johnatan

    Johnatan Активный пользователь

    С нами с:
    6 мар 2008
    Сообщения:
    508
    Симпатии:
    0
    Адрес:
    Испания
    Просто замечание:
    старайтесь никогда не оставлять в конечной версии такие вещи как
    PHP:
    Они очень сильно облегчают жизнь всяким нехорошим дядям.
     
  11. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Это надо писать в лог, а на экран выводить какое-нибудь дефолтное сообщение об ошибке.
     
  12. Clone

    Clone Guest

    Hight всё со своим логом:)) Да просто mysql_error() выводить не следует, только в целях отладки, но лучше сразу удалять, а то потом забудется.
     
  13. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    Еще вопрос :(((
    Как значение переменной $res['id']; созданную циклом файл сделать доступной вне цикла?:)
     
  14. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    8) да старик, люблю я это дело =)
     
  15. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    нужно проверить значение, которое передал пользователь с заранее заданным... в цикле :(
     
  16. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Nemo
    чиво? Ещё раз и без паники.
     
  17. Johnatan

    Johnatan Активный пользователь

    С нами с:
    6 мар 2008
    Сообщения:
    508
    Симпатии:
    0
    Адрес:
    Испания
    PHP:
    1. <?
    2. while($res = mysql_fetch_array($sql))
    3. {
    4. $id[] = $res['id'];
    5. }
    6. ?>
    А потом $id[0], $id[1]... и т.д.
     
  18. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    Johnatan, смотри внимательнее мой пост ;) :))

    Смотри.. из БД берется несколько значений... Вопрос, ответы и верный ответ...
    Все обрабатывается вайлом...

    Юзер щелкает на линк вида ?otvet=X где X правильный ответ... Вот и не знаю как сделать проверку??
    Типа если $_GET['otvet'] === 'X' то... Но не срабатывает :(
     
  19. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    PHP:
    1. <?php
    2. $otvet = true;
    3.  
    4. while($row = mysql_fetch_assoc($result))
    5. {
    6.      if($row['otvet'] == $_GET['otvet'])
    7.      {
    8.            $otvet = false;
    9.            break;
    10.      }
    11. }
    12.  
    13. if($otvet) echo 'Всё ok';
     
  20. Johnatan

    Johnatan Активный пользователь

    С нами с:
    6 мар 2008
    Сообщения:
    508
    Симпатии:
    0
    Адрес:
    Испания
    Извини, а как у тебя правильный ответ помечен? Он в колонке в отдельной? Если у тебя лимит на одну строку при выборе из БД, то так:
    PHP:
    1.  
    2. <?
    3. $row = mysql_fetch_row($sql);
    4. if ($_GET['otvet'] == $row[0]) {echo "Ответ правильный";} // Вместо 0 нужно поставить индекс колонки с правильным ответом
    5. ?>
    6.  
    2Hight
    Скорее всего имелось в виду:
    PHP:
    1. $otvet = true;
    2. break;
     
  21. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Johnatan
    Упс, промахнулся, но суть передал =)
     
  22. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    не получается :(
    По порядку
    1. Выбираем из БД случайную строку
    PHP:
    1. <? $sql = mysql_query("SELECT * FROM `question` WHERE moder=1 ORDER BY RAND() LIMIT 0,1"); ?>
    2. Обрабатываем циклом...
    PHP:
    1. <? while($res = mysql_fetch_assoc($sql)) {echo $res['question']; echo $res['otvet_1']; echo $res['otvet_verno']} ?>
    3. Пользователь нажимает на ссылку вида
    PHP:
    1. ?otvet=1
    4. Скрипт проверяет значение переменной $_GET['otvet'] со значением $res['otvet_verno']
    5. Если значение $_GET['otvet'] === $res['otvet_verno'] то...
    и вот тут проблема... не пониаю как сделать проверку...

    А теперь попробуйте совместите то, что вы предлагаете :(
     
  23. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    PHP:
    1. <?php
    2.  
    3. $dbhost = '';
    4. $dbuser = '';
    5. $dbpasswd = '';
    6. $dbname = '';
    7.  
    8. db_connect($dbhost, $dbuser, $dbpasswd, $dbname);
    9.  
    10. $sql = "SELECT * FROM `question` WHERE moder=1 ORDER BY RAND() LIMIT 0,1";
    11. $sql = mysql_query($sql) or die(mysql_error() .'-'. mysql_errno());
    12.  
    13. while($res = mysql_fetch_assoc($sql))
    14. {
    15. print('
    16. <body topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0" bgcolor="#1275A7" text="#FFFFFF" link="#FFFFFF" vlink="#FFFFFF" alink="#FFFFFF">
    17. <script type="text/javascript" src="_question.js"></script>
    18. <body onLoad="Down(); startCountdown();">
    19. <table border="1" width="100%" cellspacing="0" style="border-collapse: collapse" bordercolor="#000000">
    20.     <tr>
    21.         <td width="50%" align="center"><font size="2">Вопрос № '.(int)$res[id].'</font></td>
    22.         <td width="50%"><div align="center" id="numberCountdown"></div></td>
    23.     </tr>
    24.     <tr>
    25.         <td colspan="2" width="50%" align="center"><b>'.$res[question].'</b></td>
    26.     </tr>
    27.     <tr>
    28.         <td width="50%" align="center"><b><a href="?otvet=1">'.$res[otvet_1].'</a></b></td>
    29.         <td width="50%" align="center"><b><a href="?otvet=2">'.$res[otvet_2].'</a></b></td>
    30.     </tr>
    31.     <tr>
    32.         <td width="50%" align="center"><b><a href="?otvet=3">'.$res[otvet_3].'</a></b></td>
    33.         <td width="50%" align="center"><b><a href="?otvet=4">'.$res[otvet_4].'</a></b></td>
    34.     </tr>
    35.     <tr>
    36.         <td colspan="2" width="50%"><font size="2">Вопрос от пользователя:
    37.         </font> <b><font size="2">'.$res[author].'</font></b> Верный  - '.(int)$res[otvet_verno].'</td>
    38.     </tr>
    39. </table>');    
    40.   }
    41. ?>
     
  24. RomanBush

    RomanBush Активный пользователь

    С нами с:
    5 дек 2007
    Сообщения:
    798
    Симпатии:
    0
    Адрес:
    200 км от Москвы
    Может быть поможет:
    <input type="hidden" name="tekuschii_vopros" value="<?=$res['id'];?>" />

    А, когда тыкнули ссылку "?otvet=1", то проверяем:
    PHP:
    1. <?
    2. $res=mysql_fetch_array(mysql_query("SELECT * FROM 'question' WHERE id=".$_REQUEST['tekuschii_vopros']));
    3. if ($res['otvet_verno']==$_REQUEST['otvet']) echo "Молодец, угадал.";
    4. ?>