можно ли как нибудь узнать(вывести на экран) правильно ли я составил запрос в базу данных? идет ли запрос? Код (Text): $db->Query("SELECT * FROM `db_users_a` WHERE `id` = '$us_id' "); вот допустим выводит ли id ?
вывести - так же как ты обычно отлаживаешь значения переменных. ты же умеешь отлаживать? проверить что работает - ну для начала убедиться что субд не ругается на этот запрос. то есть синтаксически он может быть правильным но логически и нет. например опчатка в названии таблицы. если ошибок выполнения нет - можно по контексту смотреть изменение состояния бд. сколько строк вставилось/обновилось/удалилось. в любом случае для начала ты должен хорошо понимать ожидаемое состояние своего приложения уметь сравнить и отладить фактическое. Добавлено спустя 1 минуту: очевидно что такое поле в этой таблице ДОЛЖНО БЫТЬ ведь ты по нему устроил поиск. следовательно в астериск оно тоже попадает. следовательно да будет выводить айди.
да я проверил он выводит id вот этой строчкой var_dump($..);, а отладка вот эта ini_set('display_errors',1); error_reporting(E_ALL); ? но я думаю у меня не стоит отладка,потому что у меня есть другой скрипт,там сразу показывает если я указал не то название в базе данных(столбец) а тут не выводит) вот скрипт Код (Text): <?php ini_set('display_errors',1); error_reporting(E_ALL); if (isset($_GET['bonyes'])) { $_OPTIMIZATION["title"] = "Аккаунт - Ежедневный бонус"; $usid = $_SESSION["user_id"]; $uname = $_SESSION["user"]; $login = $_SESSION{"login"}; $us_id = $_SESSION{"id"}; $sum = 0.02; $db->Query("SELECT * FROM `db_users_a` WHERE `id` = '$us_id' "); $sum = 0.02; $ddel = time() + 60*60; $data = time(); $db->Query("SELECT COUNT(*) FROM bank_w WHERE user_id = '$usid' AND date_del > '$data'"); $db->Query("SELECT * FROM `bank`"); $post=$row = mysqli_fetch_array($q); if($post['data_bonus'] >= $data) { echo "<br><div align='center' class='head_mes1'><span class='mess_err'>Вы уже получали бонус за последний час!</span></div><br>"; }elseif($post1['money']< $sum){ echo "<p></p><center><span class='text_red'>В резерве бонусов закончились средства,следует пополнить наш резерв!</span></center><br>"; }else{ $db->Query("UPDATE bank SET money = money - '".$sum."'"); $db->Query("UPDATE db_users_a SET money = money + '$sum' WHERE user_id = '$usid'"); $db->Query("UPDATE db_users_a SET data_bonus = '".$ddel."', money = money +'".$sum."' WHERE id = '$usid' LIMIT 1"); $db->Query("INSERT INTO bank_w (user_id, login, summa, data) VALUES ('".$usid."', '".$login."', '".$sum."','".$data."')"); header("Location:?bonus"); exit; } } ?> </body> </html> <? $_OPTIMIZATION["title"] = "Аккаунт - Ежедневный бонус"; $usid = $_SESSION["user_id"]; var_dump($usid); $uname = $_SESSION["user"]; $sum = 0.02; $db->Query("SELECT * FROM `db_users_a` WHERE `id` = '$usid' "); $db->Query("SELECT * FROM `db_users_a` WHERE `id` = '$usid' "); if($post['data_bonus'] <= $data) { echo '<center><a class="btn_small" href="?bonus&bonyes">Получить бонус</a></center>'; } else{ echo "<p></p><center><span class='text_red'>Следующий бонус через ".time_left($post['data_bonus']-$time)." </span></center>"; } ?> не могу сделать чтоб деньги на баланс зачислялись, вот с отладкой лучше на много)
ты напрямую пихаешь текст запроса в метод хотя можно сделать типа $sql = "SELECT * FROM table WHERE 1"; var_dump($sql); $db->query($sql); или например снабдить свой инструмент работы с бд журналированием проходящих запросов и состояний и тогда можно и напрямую $db->query("SELECT * FROM bla") и журнальчик почитать пойти. в любом случае знать корректный ли запрос идет к базе - нужно.
Сумма бонуса генерируется случайно от 2 до 2 рубля. Unknown column 'user_id' in 'where clause' вот как сделать чтоб вот такие ошибки высвечивались если они есть?
я запросил и пошел на сайт,нажал на получить бонус и у меня вот такое вылезло,это наверное после запроса(наверное)
я даже и не знаю что тебе посоветовать))) на этапе разработки вполне нормально встречать такие ошибки. просто проверяй наличие ошибок после запроса, на экран печатай, тормози если критично. выводи так много сколько нужно для стопроцентной уверенности в корректности алгоритма. вывод мусора на этапе разработки вполне нормальная практика. да, конечно лучше отлаживать через соответствующие средства но по своему опыту не буду их прям вот рекомендовать.
точно посоветую тебе воздержаться от оверквотинга. мы с тобой одни в ветке беседу ведем - можно меня не цитировать. тем более прям всё сообщение в цитату можно не пихать.