Как добавить данные в mysql по url

#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

Вставить запрос

обратитесь

http://dev.mysql.com/doc/refman/5.5/en/insert.html

Комментарии:

1. 1 Да, $ _REQUEST выведет либо POST, либо GET, в строках 3 и 4 есть дополнительный «=», который не нужен, хотя 🙂

2. Спасибо за уведомление … ошибка ввода

3. Зачем извлекать из $_REQUEST , если мы знаем, что это будет именно в $_POST ?

4. Поскольку, если вы когда-нибудь измените свой метод ввода, вам не придется менять свой код $ _POST или $ _GETs, это придает коду некоторую гибкость. Похоже, что OP в любом случае не использует $ _POST, он использует $ _GET. Любой, кто говорит, что GET менее безопасен, чем POST, не понимает, что вы можете так же легко эмулировать параметр POST, как и GET (используя множество различных методов). Вы должны принять соответствующие меры для очистки входных данных независимо от того, какой метод ввода используется.