SQL Insert不会在所有字段上插入

时间:2013-05-03 14:43:51

标签: php mysql

我有PHP生成HTML表单,我正在尝试编写一个脚本来更新数据库中的信息。出于某种原因,它适用于某些领域而不是其他领域。

不起作用的代码:

PHP-Form,用户可以在

中更改详细信息
echo"<form name='details'>";
echo"<p>Surname: <input type='text'id='surname' value='".$row['Surname']."'/></p>;
<p>Telephone: <input type='text'id='phone' value='".$row['Telephone']."'/></p>;
<p>Postcode: <input type='text' id='postcode' value='".$row['Postcode']."'/></p>;
<p>House/Flat Number: <input type='text' id='number' value='".$row['Number']."'/></p>";

AJAX - 通过查询字符串

向服务器发送更改
    var sname = document.getElementById('surname').value;
    var tel = document.getElementById('phone').value;
    var num = document.getElementById('number').value;  
    var pcode = document.getElementById('postcode').value;

  var queryString = "?username=" + username +"&email="+email....";
  ajaxRequest.open("GET", "url" + queryString, true);
  ajaxRequest.send(null);

PHP - 执行更新命令

//connect to server
...
//get variables
$sname = $_GET['sname'];
$pcode = $_GET['pcode'];
$tel = $_GET['tel'];
$num=$_GET['num'];

//process update
$update ="UPDATE User SET Surname='$sname',Telephone='$tel',Number='$num',
Postcode='$pcode' WHERE Username='$username'";

//if query, display success
if(mysqli_query($update))
{
echo"success";
}
else
{
echo"error";
}
//else display error

查询执行正常,但值未显示在数据库中。我的其他变量(用户名,密码等)都更新正常。所有数据库字段都是VARCHAR(80)类型。

编辑:我确实正在执行查询。这仍然导致姓氏,邮政编码,号码和电话字段未更新。

1 个答案:

答案 0 :(得分:1)

暂时忽略此代码和方法的所有其他问题(SQL注入问题,GET与POST问题等),以及处理更新而不是按预期更改内容,有几件事需要检查

  • 尝试在日志中输出更新查询,并确保它实际上看起来像您期望的那样。可能是你想要通过网络推送的值不会进入查询或那个。

  • 验证在独立的SQL客户端(mysql,squirrel等)中手动运行查询。实际更新记录。完全有可能有效的更新查询可能与任何记录都不匹配。 (假设您要查找的用户名值与数据库中的用户名不匹配。

  • 不知道您的基础架构,我建议进行一些健全性检查:您是否真的指向正确的数据库?您的更新是否包含在正在回滚的事务中?等...

其他一些提示:

  • 我建议查看PDO,特别是Prepared Statements如何工作。您在上面构建的查询类型是有人用您的所有数据运行或更糟。虽然不是灵丹妙药,准备好的陈述是坚实的第一步。

  • 查看Jquery's Ajax个功能。特别是post方法。它为进行ajax调用提供了一个简单的接口,而无需构造特殊的url字符串。此外,切换到POST将避免您的数据显示在Web服务器日志文件中。