Хобрук: Ваш путь к мастерству в программировании

Почему я не могу подключиться к базе данных mySQL через PHP?

Я новичок в PHP и дизайне баз данных. У меня возникли проблемы с удалением строки из моей базы данных с помощью PHP. Я получаю эти ошибки, когда нажимаю кнопку «удалить» на своей веб-странице:

  • Предупреждение: mysqli_connect(): сервер MySQL исчез в H:\wamp64\www\cs3100hw3\hw3.php в строке 63.
  • Предупреждение: mysqli_connect(): ошибка при чтении приветственного пакета. PID=13284 в H:\wamp64\www\cs3100hw3\hw3.php в строке 63
  • Предупреждение: mysqli_connect(): (HY000/2006): сервер MySQL исчез в H:\wamp64\www\cs3100hw3\hw3.php в строке 63.

Строка 63 начинается с $conn. Кроме того, выполнение занимает довольно много времени, поэтому я предполагаю, что есть какая-то проблема с тайм-аутом. Я использую WampServer, если это имеет значение. Любая помощь приветствуется!

<?php
    if(isset($_POST['delete'])) {
        $dbhost = 'localhost:8000';
        $dbuser = 'root';
        $dbpass = '';
        $db = 'hw2';
        $conn = mysqli_connect($dbhost, $dbuser, $dbpass, $db);

        if(! $conn ) {
           die('Could not connect: ' . mysql_error());
        }

        $last_name = $_POST['last_name'];

        $sql = "DELETE FROM hockeyplayers WHERE lastname = $last_name" ;
        mysqli_select_db('test_db');
        $retval = mysql_query( $sql, $conn );

        if(! $retval ) {
           die('Could not delete data: ' . mysql_error($conn));
        }

        echo "Deleted data successfully\n";

        mysqli_close($conn);
    }else {
        ?>
           <form method = "post" action = "<?php $_PHP_SELF ?>">
              <table width = "400" border = "0" cellspacing = "1" 
                 cellpadding = "2">

                 <tr>
                    <td width = "100">Last Name</td>
                    <td><input name = "last_name" type = "text" 
                       id = "last_name"></td>
                 </tr>

                 <tr>
                    <td width = "100"> </td>
                    <td> </td>
                 </tr>

                 <tr>
                    <td width = "100"> </td>
                    <td>
                       <input name = "delete" type = "submit" 
                          id = "delete" value = "Delete">
                    </td>
                 </tr>

              </table>
           </form>
        <?php
    }
  ?>
15.10.2016

  • Вы настроили свой сервер на порт 8000? Вы открыты для SQL-инъекций и написали недопустимый запрос на удаление. Также mysql_query и mysql_error не работают с mysqli. Кроме того, <?php $_PHP_SELF ?> ничего не делает, и если вы повторите это, вы должны избежать его, чтобы он не вводился XSS. 15.10.2016
  • @praveen черт возьми, ты разработчик полного стека :p 15.10.2016
  • @Drew Я полный разработчик... :) Разве ты этого не знаешь? 15.10.2016
  • @hockysaint Пожалуйста, посмотрите на первый ответ обманщика для решения. 15.10.2016
  • возможно, у вас есть таблица строк 1B со сканированием таблиц в delete 15.10.2016
  • @PraveenKumar О, это хороший трюк с редактированием. Не знал, что > * отметил цитату. 15.10.2016
  • Запрос никогда не будет выполнен, нет соединения mysql_* и он недействителен (при условии, что фамилия является строкой). mysqli_select_db также недействителен, для этого потребуется строка подключения, и зачем менять БД в этот момент, просто настройте правильную БД в соединении. 15.10.2016
  • Я думаю, что я исправил проблемы с подключением. @ chris85, что не так с моим запросом на удаление? 15.10.2016
  • $last_name нужно заключать в кавычки, потому что это строка, она также открывает вас для SQL-инъекций. Установите $_POST['last_name'] на Smith' or 1=1-- (после того, как кавычки будут на месте), и все ваши записи в БД будут удалены. Используйте параметризованные запросы, и драйвер будет обрабатывать кавычки и экранирование. 15.10.2016
  • Оно работает. Всем большое спасибо! 15.10.2016

Новые материалы

Dall-E 2: недавние исследования показывают недостатки в искусстве, созданном искусственным интеллектом
DALL-E 2 — это всеобщее внимание в индустрии искусственного интеллекта. Люди в списке ожидания пытаются заполучить продукт. Что это означает для развития креативной индустрии? О применении ИИ в..

«Очень простой» эволюционный подход к обучению с подкреплением
В прошлом семестре я посетил лекцию по обучению с подкреплением (RL) в моем университете. Честно говоря, я присоединился к нему официально, но я редко ходил на лекции, потому что в целом я нахожу..

Освоение информационного поиска: создание интеллектуальных поисковых систем (глава 1)
Глава 1. Поиск по ключевым словам: основы информационного поиска Справочная глава: «Оценка моделей поиска информации: подробное руководство по показателям производительности » Глава 1: «Поиск..

Фишинг — Упаковано и зашифровано
Будучи старшим ИТ-специалистом в небольшой фирме, я могу делать много разных вещей. Одна из этих вещей: специалист по кибербезопасности. Мне нравится это делать, потому что в настоящее время я..

ВЫ РЕГРЕСС ЭТО?
Чтобы понять, когда использовать регрессионный анализ, мы должны сначала понять, что именно он делает. Вот простой ответ, который появляется, когда вы используете Google: Регрессионный..

Не зря же это называют интеллектом
Стек — C#, Oracle Опыт — 4 года Работа — Разведывательный корпус Мне пора служить Может быть, я немного приукрашиваю себя, но там, где я живу, есть обязательная военная служба на 3..

LeetCode Проблема 41. Первый пропущенный положительный результат
LeetCode Проблема 41. Первый пропущенный положительный результат Учитывая несортированный массив целых чисел, найдите наименьшее пропущенное положительное целое число. Пример 1: Input:..