Я начинаю, и я пытаюсь научиться добавлять, удалять, извлекать и обновлять базу данных с помощью PHP и Ajax.MySQL/PHP: обновить MySQL с помощью Ajax
В настоящее время я выполнил как восстановить и удалить, поэтому я пытаюсь обновить некоторые значения. Для получения данных я просто передаю выбранный идентификатор, который я хочу, поэтому я могу получить данные. То же самое касается удаления, я просто назначаю идентификатор, который я хочу удалить. Теперь, чтобы обновить, происходит больше вещей, где я не могу найти решение.
Это моя форма:
<form onsubmit="updateuser()">
ID Number: <input name="ud_id"><br>
First Name: <input type="text" name="ud_first"><br>
Last Name: <input type="text" name="ud_last"><br>
<input type="Submit" value="Update">
</form>
и это мой JavaScript:
function updateuser() {
var str = $('.ud_id').attr('value');
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("txtuser").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET", "ajaxupdate.php?q=" + str, true);
xmlhttp.send();
}
Я думаю, что проблема возникает потому, что мой файл форма ajaxupdate.php не извлекает имя и фамилию значения из формы. Как будто я их не пропускаю (?).
Вот мой ajaxupdate.php файл:
<?php include("connection.php");
$id=$_GET['ud_id'];
$first=$_GET['ud_first'];
$last=$_GET['ud_last'];
$query="UPDATE contacts SET first='$first', last='$last' WHERE id='$id'";
mysql_query($query);
mysql_close();
?>
Что я делаю неправильно, так что я могу обновить значение первой и последней из базы данных для конкретного ID?
* Всегда * побег строки с [ 'mysql_real_escape_string()'] (HTTP: // PHP .net/mysql_real_escape_string) перед добавлением их в SQL-запрос. Используйте 'mysql_real_escape_string ($ first)' вместо '$ first'. – rid
Вы имеете в виду замену $ first = $ _ GET ['ud_first']; с mysql_real_escape_string ($ first) = $ _ GET ['ud_first']; ?. Я довольно новый. Спасибо –
Я имею в виду, что значение '$ first' никогда не должно включаться непосредственно в запрос без какой-либо обработки. Если вы это сделаете, пользователь, который отправит вам значение, отправив форму, может написать все, что захочет внутри нее, включая другие операторы SQL, которые вы не собираетесь выполнять. Это называется [SQL injection] (http://en.wikipedia.org/wiki/SQL_Injection). Чтобы предотвратить это, PHP имеет 'mysql_real_escape_string()', который возвращает строку, которую вы ее отправляете, но таким образом, что вы можете смело добавить его в запрос. Таким образом, используйте что-то вроде '$ first = mysql_real_escape_string ($ _ GET ['ud_first'])'. – rid