任何人都可以帮我弄清楚这段代码中有什么问题吗?在我添加第三个查询以使用数据库中的当前信息填充表单之前,它曾经工作过。现在它只返回一个白页。
<?php
if (isset($_GET['edit'])) {
echo "<form action=\"user.php\" method=\"post\">";
$userinfo = mysqli_query($con,"SELECT * FROM members WHERE members.id='".$_COOKIE[userid]."' AND members.username='".$_COOKIE[user]."'";
while($uir = mysqli_fetch_array($userinfo)) {
echo "
<label for=\"name\">Navn:</label>
<input type=\"text\" name=\"name\" placeholder=\"Your name\" value=\"".$uir['name']."\"required /><br />
<label for=\"mobil\">Mobil:</label>
<input type=\"tel\" name=\"mobil\" placeholder=\"Mobil tlf\" value=\"".$uir['mobil']."\" required /><br />
<label for=\"bilnr\">Bil #:</label>
<input type=\"tel\" name=\"bilnr\" placeholder=\"Bil Nr.\" value=\"".$uir['bilnr']."\" required /><br />
<label for=\"regnr\">Registrerings nummer:</label>
<input autocapitalize=\"characters\" type=\"text\" name=\"regnr\" placeholder=\"Reg.Nr.\" value=\"".$uir['regnr']."\" required /><br />";
}
echo "<input type=\"submit\" /></form>";
}
elseif (isset($_POST["bilnr"])) {
$sql="UPDATE members SET name='$_POST[name]', mobil='$_POST[mobil]', bilnr='$_POST[bilnr]', regnr='$_POST[regnr]' WHERE id='".$_COOKIE[userid]."' AND username='".$_COOKIE[user]."'";
if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
echo "<p class=\"red\">Informasjonen er oppdatert!</p>";
mysqli_close($con); }
else {
echo "<a href=\"user.php?edit\">Oppdater bruker info</a>";
}
?>
答案 0 :(得分:1)
您应该将数组键放在引号之间:
$_COOKIE['userid']
其次,不要在SQL代码中直接使用它们。当你编写这样的查询时,在代码中找到错误会更容易:
$name = $_POST['name'];
$mobil = $_POST['mobil'];
$bilnr = $_POST['bilnr'];
$regnr = $_POST['regnr'];
$sql="UPDATE members
SET name='$name', mobil='$mobil', bilnr='$bilnr',
regnr='$regnr' etc.
答案 1 :(得分:0)
您忘记在第6行关闭第一个mysqli_query的括号。只需在该行的分号前添加一个右括号,php将再次解析它。
即:
$userinfo = mysqli_query($con,"SNIPPETY SNIP SNIP"."'";
为:
$userinfo = mysqli_query($con,"SNIPPETY SNIP SNIP"."'");
除非您想要SQL错误,否则请勿将实际查询更改为SNIPPETY SNIP SNIP。
根据John Conde的评论,调整代码以防止sql注入。