#php #mysql #url
#php #mysql #url
Вопрос:
новичок в php здесь, в основном я хочу знать, как добавить данные в мою таблицу mysql вручную, используя URL.
Например, скажем, у меня есть таблица под названием users, в которой есть 3 поля с именами ‘ID’, ‘username’ и ‘password’. Я хочу добавить данные в таблицу следующим образом:
http://localhost/register.php?id=1@username=bob@password=123@act=register (Я не уверен, что это полностью правильно), но да, что-то вроде этого.
Буду признателен за любую помощь в том, как это сделать!
Комментарии:
1. Не используйте HTTP GET для изменения данных. Вместо этого используйте POST.
2. Я не уверен, отвечает ли это на мой вопрос: Что именно вы имеете в виду? Я не пытаюсь изменить данные, я пытаюсь добавить данные с помощью URL, как в примере, который я опубликовал.
3. Да, это не ответ, ответы будут в нижней части. Это просто рекомендация следовать стандартным практикам. Предполагается, что GET является идемпотентным, что означает, что вы можете выполнять одну и ту же операцию снова и снова без каких-либо побочных эффектов. Представьте, что вы делаете 10 раз с теми же данными, не влияя на состояние вашей базы данных.
4. Пожалуйста, изучите атаки с использованием SQL-инъекций, прежде чем внедрять это решение. Вы поблагодарите меня за это позже.
5. @wes На самом деле, если он это сделает, то он никогда не поблагодарит вас, потому что его никогда не взломают и он не узнает, что сделал бы иначе. С другой стороны, если он станет владельцем, потому что не последует вашему совету, он пожалеет об этом позже … 🙂
Ответ №1:
mysql_connect('localhost', 'mysql_user', 'mysql_password');
mysql_select_db('database');
mysql_query("INSERT INTO table (id, username, password) VALUES ('".mysql_real_escape_string($_GET['id'])."', '".mysql_real_escape_string($_GET['username'])."', '".mysql_real_escape_string($_GET['password'])."')");
Ответ №2:
$query = "insert into users (username, password) values ('".$_GET['username']."','".$_GET['password']."'";
Это означало бы вставить пользователя на основе параметра act.
Кроме того, обычно параметры в get разделяются на «amp;», а не «@».
Комментарии:
1. когда я успешно вставлю данные, как я могу вернуть этот идентификатор и распечатать его??
Ответ №3:
Прежде всего, если вы сохраняете большие данные, лучше использовать POST , а не GET . Но если вам действительно нужно отправить данные на сервер с URL, ваш URL должен быть изменен, как показано ниже:
Вы должны использовать ‘amp;’ вместо ‘@’
http://localhost/register.php?id=1amp;username=bobamp;password=123amp;act=register
На стороне сервера вы можете извлечь данные следующим образом:
$id = mysql_real_escape_string($_GET['id']);
$username = mysql_real_escape_string($_GET[‘имя пользователя’]);
$password = mysql_real_escape_string($_GET[‘пароль’]);
$sql = mysql_query(‘ВСТАВИТЬ В имя_таблицы (идентификатор, имя пользователя, пароль) ЗНАЧЕНИЯ (‘.$id.’, ‘.$username.’, ‘.$password.’); if (!$sql){ echo «Ошибка» . mysql_error(); }else{ echo «Успех»; }
Ответ №4:
используйте
$id = $_REQUEST['id'];
$username = $_REQUEST['username'];
$password = $_REQUEST['password'];
$act = $_REQUEST['act'];
чтобы получить значения из url
Затем обычный MySQL
Вставить запрос
обратитесь
Комментарии:
1. 1 Да, $ _REQUEST выведет либо POST, либо GET, в строках 3 и 4 есть дополнительный «=», который не нужен, хотя 🙂
2. Спасибо за уведомление … ошибка ввода
3. Зачем извлекать из
$_REQUEST
, если мы знаем, что это будет именно в$_POST
?4. Поскольку, если вы когда-нибудь измените свой метод ввода, вам не придется менять свой код $ _POST или $ _GETs, это придает коду некоторую гибкость. Похоже, что OP в любом случае не использует $ _POST, он использует $ _GET. Любой, кто говорит, что GET менее безопасен, чем POST, не понимает, что вы можете так же легко эмулировать параметр POST, как и GET (используя множество различных методов). Вы должны принять соответствующие меры для очистки входных данных независимо от того, какой метод ввода используется.