Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 仅更新数据库中的最后一行_Php_Mysql - Fatal编程技术网

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

Php 仅更新数据库中的最后一行,php,mysql,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("Loc

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

         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>";
}

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

在我脑海中,这看起来很可疑:

$query= "UPDATE product SET  name='".$name."', price='".$price."' , image='".$image."' WHERE productid = '".$productid."';";
如果productid是一个整数,您不需要或不想在其周围加单引号,因为它不是字符串。此外,使用客户机库的语句中不包含结束分号。PHP插值可以为您解决很多这方面的问题,而不是您一直试图连接以避开双引号转义

$query= "UPDATE product SET name='$name', price='$price', image='$image' WHERE productid = $productid";
话虽如此,您应该为所有输入使用绑定变量,而不是插入查询中


请参阅:

您使用的是什么?你的代码中没有。您可能需要以单独的形式包装每个单独的
  • ;否则,将只提交最后一行,因为每一行都会覆盖上一行。这就是我所用的,我不确定这是否是你所要求的;它在PHP中的什么位置?如果您将所有内容都放在一个表单中,那么您将有多个同名元素-每行都有一个
    图像
    产品ID
    ,等等。因此,当您提交表单时,将提交所有数据,并且只添加最后一行中的信息,因为之前的所有元素都已被覆盖。是的,非常感谢:)请随意添加它作为答案,并在可能的情况下接受它;)
    $query= "UPDATE product SET name='$name', price='$price', image='$image' WHERE productid = $productid";