#php #mysql
#php #mysql
Вопрос:
Пытаюсь отправить данные в базу данных SQL из PHP-формы. Веб-страница не выдает никаких ошибок при подключении к базе данных, но не может понять, как передать эти переменные из html в mysql.
$dbc = @mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME)
OR die('Could not connect to MySQL: ' .
mysqli_connect_error());
$sql = "insert into music (song, artist, album, year genre)
values('$song', '$artist', '$album', '$year', '$genre',)";
$dbc->query($sql)
Ответ №1:
Предполагая, что методом form является POST, вы должны использовать $_POST[]
массив. Элемент HTML form id
— это то, что вы используете для доступа к элементу массива.
Например, если у вас есть <input type="text" id="name">
, вы бы использовали $_POST['name']
для получения имени из формы.
В качестве альтернативы вы можете использовать $_REQUEST['']
which содержит $_POST
, $_GET
, и $_COOKIE
значения.
Чтобы предотвратить внедрение SQL и другие проблемы, связанные с пользовательским вводом, вы также захотите использовать mysqli_real_escape_string()
. Что-то вроде:
$firstName = mysqli_real_escape_string($connection, $_REQUEST['firstName']);
Затем вставьте $firstName
в свой запрос.
Дополнительная информация для mysqli_real_escape_string()
:
PHP.net
Школы W3Schools
Комментарии:
1. Вы должны указать, как
mysqli_real_escape_string( )
предоставить OP уровень защиты.2. Очень хорошая мысль, @PhiterFernandes. Не стесняйтесь редактировать мой ответ, чтобы включить это 🙂
3. Я вижу, что вы начинаете свой путь в Stack Overflow, и вы столкнетесь со многими вопросами php, используя
mysql_*
и напрямую добавляя$_POST
и$_GET
к запросам. Вам придется каждый раз предупреждать их о внедрении SQL, это даст вам больше голосов.