【发布时间】:2014-01-18 22:15:39
【问题描述】:
我想通过下面的表格更新 MySQL 行。该表单原样工作得很好,但是,如果我将字段留空,它也会将 MySQL 中的字段更改为空白。我想更新 sql 但跳过所有空白字段。
我已经阅读了一些这样做的方法,但它们似乎不合逻辑。 IE。在 sql 字符串本身中使用 if 语句。 (让 MySQL 完成应该在 PHP 中完成的工作)。
if($_SERVER['REQUEST_METHOD'] != 'POST')
{
echo '<form method="post" action="">
ID: <input type="text" name="a" /><br>
Program: <input type="text" name="b" /><br>
Description: <textarea row="6" cols="50" name="c"></textarea><br>
Cost: <input type="text" name="d"><br>
<input type="submit" value="Add Link" />
</form>';
}
try {
$dbh = new PDO($dsn, $user, $pass);
$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$stmt = $dbh->prepare('UPDATE links SET Program = :program , Descr = :descr, Cost = :cost WHERE Id= :id');
$stmt->bindParam(":id", $_POST["a"]);
$stmt->bindParam(":program", $_POST["b"]);
$stmt->bindParam(":descr", $_POST["c"]);
$stmt->bindParam(":cost", $_POST["d"]);
$stmt->execute();
if (!$stmt) {
echo "\nPDO::errorInfo():\n";
print_r($dbh->errorInfo());}
$dbh = null;
}
}catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
【问题讨论】:
-
如果该字段没有值,您的意思是要将该字段设置为
NULL? -
Evening Robbert,不,如果字段为空,我希望它被忽略。因此,在一天结束时,数据库中的空白字段保持不变。
-
只是为了澄清一点(一开始就应该这样做)。如果我填写了上面的表格,但将费用字段留空。我希望 php/mysql 使用给定的信息更新数据库,但不更新表单中的空白字段。谢谢
-
我认为
if语句是您唯一的解决方案。 -
您应该使用
!empty(trim($_POST['a']))验证输入字段