我有这样的表格:
<form id="ereserva" action="index.php" method="post">
<fieldset>
<label for="id">ID</label>
<input type="id" name="ei" id="eid" readonly class="id text ui-widget-content ui-corner-all">
<label for="name">Nombre</label>
<input type="text" name="en" id="ename" class="name text ui-widget-content ui-corner-all">
</fieldset>
<input type="submit" tabindex="-1">
</form>
我发送的内容是:
$.post("edit.php", $("#ereserva").serialize());
执行此操作的php文件:
<?php
include_once('connection.php');
$id = $_POST['ei'];
$name = $_POST['en'];
if($con->query("UPDATE reserves SET nom='".$name."' WHERE ID ='".$id."';")=== TRUE)
printf("alert('success');");
else
printf("alert('fail');");
?>
但控制台显示500内部服务器错误。
我担心我在名字或身份证上犯了一些错误,因为我使用相同的系统发送了另一种不同的表格并且它完美无缺。
不过,我正在重新阅读所有名字和ID,我没有发现任何问题......
编辑:为了更明确,日志说:
[Sun May 10 09:13:44.971628 2015] [:error] [pid 6737] [client ::1:49874] PHP Notice: Undefined variable: id in /Library/WebServer/Documents/s$
但是变量id
从表单名称ei
到达POST,这是一个明确填充的表单字段,所以我仍然不能很清楚地看到它。
答案 0 :(得分:1)
500
表示服务器上存在错误:
if($con->query("UPDATE reserves SET nom='".$name."' WHERE ID =".$id))
// ^^^^^^^^^
printf("alert('success');");
else
printf("alert('fail');");
您在comma
之前的查询中添加了额外的WHERE
。
另外,猜测ID
为integer
,因此不需要quotes
。
答案 1 :(得分:1)
我的猜测是错误来自另一个脚本,因为您将$_POST['ei']
分配给id
,这意味着id
已定义。如果未定义$_POST['ei']
,则错误为undefined index ei
此外,您应该清理数据,或使用预准备语句来阻止SQL injection。像这样举例如:
$id = intval($id);
$name = mysql_real_escape_string($name);