我从像这样的表单中获取值
$value = mysql_real_escape_string($_POST['id']);
$value1 = mysql_real_escape_string($_POST['name']);
$value2 = mysql_real_escape_string($_POST['age']);
我正在使用这样的mysql语法在DB
中存储信息$sql = "UPDATE table SET name='$value1',age='$value2' WHERE id ='$value'";
我希望上面提到的UPDATE语法仅在值不为NULL或不为空时才起作用。
例如,如果名称表格留空并且已为年龄提供了一些值,则应仅更新年龄而不是名称..
我该怎么做?
答案 0 :(得分:1)
您可以使用empty()
检查值是空还是空白。
if ( !empty( $value) && !empty( $value1 ) && !empty( $value2 ) ) {
// Do query
}
您还应该使用isset()
检查$ _POST元素,以确保在使用它们之前存在值:
if ( isset( $_POST['id'] ) ) {
$value = mysql_real_escape_string($_POST['id']);
}
答案 1 :(得分:1)
在最基本的级别,您可以使用isset检查非空值。
例如:
if(isset($_POST['id']) && isset($_POST['name']) && isset($_POST['age'])) {
// Do the insert...
}
但是,我怀疑你可能想要进行一些适当的验证以确保年龄有效等等(如果有意义的话,也许可以通过if(intval($value2) !== 0)
。)
另外,我确实建议不允许用户随意更新数据库记录。 (POST非常容易欺骗,用户可以简单地更改表单'id'值。)
答案 2 :(得分:1)
if(isset($_POST['id']) && isset($_POST['name']) && isset($_POST['age']))
{
$value = mysql_real_escape_string($_POST['id']);
$value1 = mysql_real_escape_string($_POST['name']);
$value2 = mysql_real_escape_string($_POST['age']);
$sql=" UPDATE table SET name='$value1',age='$value2' WHERE id ='$value'";
}
请参阅:isset()
答案 3 :(得分:0)
if ((isset($_POST['id']) && ($_POST['id'] !== '')) &&
(isset($_POST['name']) && ($_POST['name'] !== '')) &&
(isset($_POST['age']) && ($_POST['age'] !== ''))) {
... everything ok ... do data base stuff
} else {
die("Not correct");
}
答案 4 :(得分:-1)
试试这个:
//$value1 = 'joey';
$value2 = 123;
$sql = "UPDATE table SET ";
$sql .= !empty($value1) ? " name='{$value1}'," : null;
$sql .= !empty($value2) ? " age='{$value2}'," : null;
$sql = substr($sql, 0, -1);
$sql .= " WHERE id ='{$value}'";
echo $sql;
它应该只更新非空的变量。也像上面提到的其他人那样逃避。