我有一个通过 AJAX 调用的表单(用于在 CMS 上使用),然后该表单用于更新内容数据库,但是它不起作用,我似乎无法弄清楚在哪里。
一切都在提交之前完成,因为所有字段都正确填写了数据库行、列等,并且数据预先填充了当前的内容。问题出在 AJAX commit() 函数和 eupdate.php MySQL 查询之间。
eform.php(通过另一个页面 eindex.php 拉取并显示)
<?php
require("../mcfrdb.php");
// Included database once using the require method
$item = $_POST['item'];
$page = $_POST['page'];
$row = mysql_query("SELECT * FROM mcfr WHERE pageid = '$page'");
$data = mysql_fetch_array($row);
?>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" type="text/javascript"> </script>
<script type="text/javascript">var $j = jQuery.noConflict();</script>
<script type="text/javascript">
function submit(){
$j.ajax({
type:"POST",
url:"eupdate.php",
data: "item=" + $j('#item') + "&itemcont=" + $j('#itemcont') + "&page=" + $j('#page'),
success:function(response){
$j("#msg").html(response);
}
});
}
</script>
<div id="msg"></div>
<form id = "edititem" name = "edititem" onsubmit="return false;" method="post" >
<textarea cols="20" rows="5" name="itemcont" id="itemcont"><? echo $data[$item]; ?></textarea> <br/>
<input type="text" name="item" id="item" value="<? echo $item; ?>"><br/>
<input type="text" name="page" id="page" value="<? echo $page; ?>"><br/>
<input type="button" value="make changes" onclick="submit()" >
</form>
eupdate.php
<?php
require("../mcfrdb.php");
// Included database once using the require method
$item=$_POST['item'];
$page=$_POST['page'];
$newcont=$_POST['itemcont'];
$row = mysql_query("UPDATE mcfr SET '$item' = '$newcont' WHERE pageid = '$page'");
?>
当我单击按钮提交时,在检查我的数据库后,没有任何更改或更新。
提前感谢所有回复,希望我们能解决这个问题:) 干杯
最佳答案
由于您使用 AJAX 提交数据,因此不需要使用 form
元素(特别是它要求您执行其他操作以防止数据正常提交)。
无论如何,基本问题可能是您如何(不)检索字段的值。 $j('#item')
返回绑定(bind)到 item
输入的 jQuery 对象,而不是其值。要获取该值,请使用 .val()
方法,例如:$j('#item').val()
。
顺便说一句,在任何 SQL 查询中使用 PHP 脚本中发布的数据之前,您还需要对其进行转义,否则您很容易受到一些可怕的 SQL 注入(inject)攻击。请参阅 mysql_real_escape_string 的文档以获取解释:http://php.net/manual/en/function.mysql-real-escape-string.php
关于jquery - AJAX POST 无法更新 MySQL 数据库的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7377926/