За последние 24 часа нас посетили 53908 программистов и 1715 роботов. Сейчас ищут 804 программиста ...

запрос

Тема в разделе "PHP для новичков", создана пользователем Андрей12, 27 фев 2015.

  1. Андрей12

    Андрей12 Новичок

    С нами с:
    18 фев 2015
    Сообщения:
    131
    Симпатии:
    0
    можно ли как нибудь узнать(вывести на экран) правильно ли я составил запрос в базу данных? идет ли запрос?
    Код (Text):
    1. $db->Query("SELECT * FROM `db_users_a` WHERE `id` = '$us_id' ");
    вот допустим выводит ли id ?
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    вывести - так же как ты обычно отлаживаешь значения переменных. ты же умеешь отлаживать?
    проверить что работает - ну для начала убедиться что субд не ругается на этот запрос. то есть синтаксически он может быть правильным но логически и нет. например опчатка в названии таблицы. если ошибок выполнения нет - можно по контексту смотреть изменение состояния бд. сколько строк вставилось/обновилось/удалилось. в любом случае для начала ты должен хорошо понимать ожидаемое состояние своего приложения уметь сравнить и отладить фактическое.

    Добавлено спустя 1 минуту:
    очевидно что такое поле в этой таблице ДОЛЖНО БЫТЬ ведь ты по нему устроил поиск. следовательно в астериск оно тоже попадает. следовательно да будет выводить айди.
     
  3. Андрей12

    Андрей12 Новичок

    С нами с:
    18 фев 2015
    Сообщения:
    131
    Симпатии:
    0

    да я проверил он выводит id вот этой строчкой var_dump($..);, а отладка вот эта ini_set('display_errors',1);
    error_reporting(E_ALL); ? но я думаю у меня не стоит отладка,потому что у меня есть другой скрипт,там сразу показывает если я указал не то название в базе данных(столбец) а тут не выводит) вот скрипт
    Код (Text):
    1.  
    2.  
    3.  
    4.  
    5. <?php
    6. ini_set('display_errors',1);
    7. error_reporting(E_ALL);
    8.  
    9. if (isset($_GET['bonyes'])) {
    10.  
    11. $_OPTIMIZATION["title"] = "Аккаунт - Ежедневный бонус";
    12. $usid = $_SESSION["user_id"];
    13. $uname = $_SESSION["user"];
    14. $login = $_SESSION{"login"};
    15. $us_id = $_SESSION{"id"};
    16. $sum = 0.02;
    17.  
    18.  
    19. $db->Query("SELECT * FROM `db_users_a` WHERE `id` = '$us_id' ");
    20.  
    21. $sum = 0.02;
    22. $ddel = time() + 60*60;
    23.  
    24. $data = time();
    25.  
    26.  
    27. $db->Query("SELECT COUNT(*) FROM bank_w WHERE user_id = '$usid' AND date_del > '$data'");
    28.  
    29. $db->Query("SELECT * FROM `bank`");
    30.  
    31.  
    32.  
    33. $post=$row = mysqli_fetch_array($q);
    34.  
    35. if($post['data_bonus'] >= $data)
    36. {
    37. echo "<br><div align='center' class='head_mes1'><span class='mess_err'>Вы уже получали бонус за последний час!</span></div><br>";
    38. }elseif($post1['money']< $sum){
    39. echo "<p></p><center><span class='text_red'>В резерве бонусов закончились средства,следует пополнить наш резерв!</span></center><br>";
    40. }else{
    41. $db->Query("UPDATE bank SET money = money - '".$sum."'");
    42.  
    43. $db->Query("UPDATE db_users_a SET money = money + '$sum' WHERE user_id = '$usid'");
    44. $db->Query("UPDATE db_users_a SET data_bonus = '".$ddel."', money = money +'".$sum."' WHERE id = '$usid' LIMIT 1");
    45. $db->Query("INSERT INTO bank_w (user_id, login, summa, data) VALUES ('".$usid."', '".$login."', '".$sum."','".$data."')");
    46. header("Location:?bonus");
    47. exit;
    48. }
    49. }
    50.  
    51.  
    52.  
    53.  
    54. ?>
    55. </body>
    56. </html>
    57. <?
    58.  
    59. $_OPTIMIZATION["title"] = "Аккаунт - Ежедневный бонус";
    60. $usid = $_SESSION["user_id"];
    61. var_dump($usid);
    62. $uname = $_SESSION["user"];
    63. $sum = 0.02;
    64.  
    65.  
    66. $db->Query("SELECT * FROM `db_users_a` WHERE `id` = '$usid' ");
    67.  
    68. $db->Query("SELECT * FROM `db_users_a` WHERE `id` = '$usid' ");
    69.  
    70.  
    71. if($post['data_bonus'] <= $data)
    72. {
    73. echo '<center><a class="btn_small" href="?bonus&bonyes">Получить бонус</a></center>';
    74. }
    75. else{
    76. echo "<p></p><center><span class='text_red'>Следующий бонус через ".time_left($post['data_bonus']-$time)." </span></center>";
    77.  
    78. }
    79. ?>
    не могу сделать чтоб деньги на баланс зачислялись, вот с отладкой лучше на много)
     
  4. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    но я так понимаю проблема чуть выше да? фигурные скобки работают при обращении к индексу массива?
     
  5. Андрей12

    Андрей12 Новичок

    С нами с:
    18 фев 2015
    Сообщения:
    131
    Симпатии:
    0
    эм.. даже не знаю что ответить) я случайно фигурные поставил) [] такие хотел )
     
  6. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    ты напрямую пихаешь текст запроса в метод хотя можно сделать типа
    $sql = "SELECT * FROM table WHERE 1";
    var_dump($sql);
    $db->query($sql);

    или например снабдить свой инструмент работы с бд журналированием проходящих запросов и состояний и тогда можно и напрямую $db->query("SELECT * FROM bla") и журнальчик почитать пойти. в любом случае знать корректный ли запрос идет к базе - нужно.
     
  7. Андрей12

    Андрей12 Новичок

    С нами с:
    18 фев 2015
    Сообщения:
    131
    Симпатии:
    0

    Сумма бонуса генерируется случайно от 2 до 2 рубля.

    Unknown column 'user_id' in 'where clause' вот как сделать чтоб вот такие ошибки высвечивались если они есть?
     
  8. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    если они есть ДО ЗАПРОСА?
     
  9. Андрей12

    Андрей12 Новичок

    С нами с:
    18 фев 2015
    Сообщения:
    131
    Симпатии:
    0
    я запросил и пошел на сайт,нажал на получить бонус и у меня вот такое вылезло,это наверное после запроса(наверное)
     
  10. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    я даже и не знаю что тебе посоветовать))) на этапе разработки вполне нормально встречать такие ошибки. просто проверяй наличие ошибок после запроса, на экран печатай, тормози если критично. выводи так много сколько нужно для стопроцентной уверенности в корректности алгоритма. вывод мусора на этапе разработки вполне нормальная практика. да, конечно лучше отлаживать через соответствующие средства но по своему опыту не буду их прям вот рекомендовать.
     
  11. Андрей12

    Андрей12 Новичок

    С нами с:
    18 фев 2015
    Сообщения:
    131
    Симпатии:
    0
    спасибо) и кстати я сделал что хотел) теперь к другому приступаю)
     
  12. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    точно посоветую тебе воздержаться от оверквотинга. мы с тобой одни в ветке беседу ведем - можно меня не цитировать. тем более прям всё сообщение в цитату можно не пихать.
     
  13. Андрей12

    Андрей12 Новичок

    С нами с:
    18 фев 2015
    Сообщения:
    131
    Симпатии:
    0
    мне так удобно)) Столько умных слов,ужс) пойду почитаю что это...
    понял что это) хорошо.