Частичное обновление списка с помощью AJAX
У меня есть список из базы данных, и я хочу реализовать функцию редактирования, где при onclicking столбца таблицы столбец становится редактируемым, а при щелчке из столбца значение обновляется.
Для этой цели я использовал AJAX. Мой код выглядит следующим образом:
Page1.php
<script src="http://code.jquery.com/jquery-1.10.2.js"></script> <script> function showEdit(editableObj) { $(editableObj).css("background","#FFF"); } function saveToDB(editableObj,column,id) { $.ajax( { url: "page2.php", type: "POST", data:'column='+column+'&editval='+editableObj.innerHTML+'&id='+id, success: function(data) { $(editableObj).css("background","#FDFDFD"); } }); } </script>
Столбец моей таблицы выглядит следующим образом:
<td contenteditable="true" onBlur="saveToDB(this, 'exmid','<?php echo $p0; ?>')" onClick="showEdit(this);"><?php echo $p3 ?>
Примечание: $p0 содержит серийный номер строки из таблицы базы данных mysql, а $p3 содержит отображаемый текст.
Код для page2.php является:
<?php include_once 'includes/db_connect.php'; ?> <?php $result = mysql_query("UPDATE examlist1 set " . $_POST["column"] . " = '".$_POST["editval"]."' WHERE sno=".$_POST["id"]); ?>
Проблема: Когда я нажимаю на колонку, она становится редактируемой. Использование alert () внутри saveToDB() Это первый раз, когда я сам пытаюсь использовать ajax в php-коде.
Плз подскажите, в чем проблема и каково ее решение. Код реализуется на сервере на базе Linux размещенном в Godaddy с использованием PHP 5.4
Кроме того, я хотел бы установить цвет фона на fail. Как написать его внутри блока ajax?
Что я уже пробовал:
Я проверил, что функция вызывается при щелчке из столбца, а также значения столбца и идентификатора верны.
Затем я попробовал функцию alert () внутри $.ajax, но она не была вызвана. Я не уверен, работает ли ajax или нет.
Richard Deeming
Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.
Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов / OWASP[^]
Member 8057273
Привет. Я всегда использую параметризованный quey, но здесь имя столбца должно было передаваться динамически. Я имею в виду, что перед " = " можно ли передать параметр?
Richard Deeming
Нет, вы не можете использовать параметр для имени таблицы или столбца.
Но вы также не должны слепо принимать любое значение, которое пользователь отправляет на вашу страницу. У вас должен быть список допустимых имен столбцов и убедитесь, что имя столбца существует в этом списке.