<?php
session_start();
include('config.php');
$id = $_SESSION['USER_ID'];
$sql = "UPDATE user ";
if($_POST["fname"]!=""){
$sql .="set FIRST_NAME='".$_POST["fname"]."',";
}
if($_POST["lname"]!=""){
$sql .="set LAST_NAME='".$_POST["lname"]."',";
}
if($_POST["email"]!=""){
$sql .="set EMAIL='".$_POST["email"]."',";
}
$sql .="where USER_ID=".$id ;
$result = mysql_query($sql);
if($result=='1'){
?>
<script type="text/javascript">
alert('Details successfully changed!');
</script>
<?php
}else{
?>
<script type="text/javascript">
alert('Error : Data editing');
</script>
<?php
}
以上是我用来编辑用户表中的详细信息的代码。我确实想检查已填充的字段然后将其更新到数据库中,但这不起作用,当我回显这个$ sql时它显示了这个。
UPDATE user set FIRST_NAME='test',set LAST_NAME='one',set EMAIL='test@gmail.com',where USER_ID=4
那么我的代码错误是什么?
答案 0 :(得分:0)
你的SQL语法错了......
完整语法为:UPDATE user set FIRST_NAME='value', set LAST_NAME='value', set EMAIL='value', where USER_ID=<id>
但是在最后一组之后你可能没有逗号。所以你的正确语法应该是:UPDATE user set FIRST_NAME='value', set LAST_NAME='value', set EMAIL='value' where USER_ID=<id>
通过使用if语句,您必须在if条件中添加逗号。但是第一个和最后一个名字是空的,在这种情况下你可能不会。
一个选项可以是创建一个数组,并使用implode。 例如,通过使用插入,您可以执行此操作:
<?php
// array containing data
$array = array(
"name" => "John",
"surname" => "Doe",
"email" => "j.doe@intelligence.gov"
);
// build query...
$sql = "INSERT INTO table";
// implode keys of $array...
$sql .= " (`".implode("`, `", array_keys($array))."`)";
// implode values of $array...
$sql .= " VALUES ('".implode("', '", $array)."') ";
// execute query...
$result = mysql_query($sql) or die(mysql_error());
?>
****编辑 其他方式是:
$array = array();
if($_POST["firstname"] != "")
{
$array["FIRST_NAME"] = "value";
}
if($_POST["lastname"] != "")
{
$array["LAST_NAME"] = "value";
}
if($_POST["email"] != "")
{
$array["EMAIL"] = "value";
}
$query = "UPDATE user SET ";
$counter = 0;
foreach($array as $key => $value)
{
if($counter != 0 && $counter < count($array))
$query .= ",";
$query .= $key . "=" . $value;
}
答案 1 :(得分:0)
SQL中的问题是多个'SET'语句。
你可以使用类似的东西。
一个数组,用于设置您的值,然后您可以将其分解为“,”
$id = $_SESSION['USER_ID'];
$setStatement = array();
if($_POST["fname"] != "") { array_push($setStatement, "FIRST_NAME = '".$_POST["fname"]."'"); }
if($_POST["lname"] != "") { array_push($setStatement, "LAST_NAME = '".$_POST["lname"]."'"); }
if($_POST["email"] != "") { array_push($setStatement, "EMAIL = '".$_POST["email"]."'"); }
if(!empty($setStatement)) {
$sql = "UPDATE user SET " . implode($setStatement, ", ") . " WHERE USER_ID=". $id;
//print $sql;
$result = mysql_query($sql);
}