仅更新数据库中的最后一行

时间:2013-12-06 18:42:52

标签: php mysql

我为学校项目的管理员构建后端,以更改产品数据。这是我对表单的代码

         dbCon();
$query = "SELECT * FROM product WHERE categoryid = 1;";
$result = mysqli_query($dbc,$query) or die('Error querying database.');
if (mysqli_num_rows($result) == NULL) {
mysqli_close($dbc);header("Location:index.php?l=f");exit();
}
echo "<h1>Middlefartvej:</h1>";
while ($row = mysqli_fetch_assoc($result)){
$name = $row['name'];
$price = $row['price'];
$image = $row['image'];
$productid = $row['productid'];
echo "<li>";
echo "<img src='".$image."' alt='Food_pic' style='height:100px'>";
echo "Change picture: <input name='image' type='text' class='' value='".$image."' onFocus='this.value=' placeholder='".$image."'/>";
echo "<input name='productid' type='text' class='' value='".$productid."' onFocus='this.value=' placeholder='".$productid."'/>";
echo "Change name of food:<input name='name' type='text' class='' value='".$name."' onFocus='this.value=' placeholder='".$name."'/>";
echo "Change price: "." "."<input name='price' type='text' class='' value='".$price."' onFocus='this.value=' placeholder='".$price."'/>";
echo '<input type="submit" name="submit" value="Go" class="loginButton">';
echo "</li>";
}

但现在我只能更改最后一个表单字段,如果我改变了其他内容,它什么都不做。这是编辑代码

dbCon();

//get the variables



$name = $_POST["name"];
$categoryid = $_POST["categoryid"];
$price = $_POST["price"];
$image = $_POST["image"];
$productid = $_POST["productid"];


//update the database with newdata that user has inserted

$query= "UPDATE product SET  name='".$name."', price='".$price."' , image='".$image."' WHERE productid = '".$productid."';";
$result = mysqli_query($dbc,$query) or die(mysqli_error($dbc));

1 个答案:

答案 0 :(得分:0)

一些调试怎么样?在执行查询之前,回显$ query变量的值。该声明有效吗?它是从sql命令行还是phpmyadmin执行的?

从头顶看,这看起来很可疑:

$query= "UPDATE product SET  name='".$name."', price='".$price."' , image='".$image."' WHERE productid = '".$productid."';";

如果productid是一个整数,你不需要或想要在它周围加上单引号,因为它不是一个字符串。此外,您不会在使用客户端库的语句中包含结束分号。 PHP Interpolation可以为你处理很多这个问题,而不是你试图连接以逃避双引号。

$query= "UPDATE product SET name='$name', price='$price', image='$image' WHERE productid = $productid";

话虽如此,您应该为所有输入使用绑定变量,而不是插入到查询中。

请参阅:http://php.net/manual/en/mysqli-stmt.bind-param.php