我有一个有更新查询的网站.例.
Table name -> myTable
Table Content -> id(AI)
name --> myName
age --> 13
image --> (no values)
birthdate --> (no values)
我只把值放在名字和年龄上.在图像和生日,我没有放任何东西.
如果我编辑并更新它并且我没有在名称和年龄中添加任何内容,我只将值放在图像和生日中.输出是这样的. (我想要的这个输出)
Table name -> myTable
Table Content -> id(AI)
name --> myName
age --> 13
image --> myImage.jpg
birthdate --> Feb. 31, 2010
这是我的代码:
//mysql connect...
//mysql select database...
$sql = "UPDATE myTable SET name = '".$name."', age = '".$age."', image = '".$image."', birthdate"'$birthdate.."' WHERE id = $id";
mysql_query($sql);
?>
我用过这段代码,但输出是:
Table name -> myTable
Table Content -> id(AI)
name --> (no values)
age --> (no values)
image --> myImage.jpg
birthdate --> Feb. 31, 2010
如果您不理解我的问题,请随时询问
谢谢
解决方法:
如果您没有在UPDATE语句中包含新值,UPDATE会保留列.
因此,您可能需要使用一些条件代码来构建$sql变量,该条件代码检查用户输入的内容,然后仅在用户为其提供值时才包含列.
$columns = array("name", "age", "image", "birthdate");
$set = array();
foreach ($columns as $col) {
if (isset($_GET[$col])) {
$set[] = "$col = '" . mysql_real_escape_string($_GET[$col]) . "'";
}
}
$sql = "UPDATE myTable "
if ($set) {
$sql .= " SET " . implode(",", $set);
}
$sql .= " WHERE id = " . (int) $id;
标签:php,mysql
来源: https://codeday.me/bug/20190726/1546106.html