我正在使用一个相当直接的表单但由于某种原因它没有提交NULL结果而是将它们作为空结果提交。
<div class="span6">
<form action="" method="POST">
<div class="block-fluid without-head">
<div class="toolbar clearfix">
<div class="right">
<div class="btn-group">
<button type="submit" class="btn btn-small btn-warning tip" data-original-title="Submit Aritcle">
<span class="icon-ok icon-white"></span>
</button>
<button type="button" class="btn btn-small btn-danger tip" data-original-title="Delete Article">
<span class="icon-remove icon-white"></span>
</button>
</div>
</div>
<div class="left">
<div style="font-size: 11pt; font-family: -webkit-body; font-weight: bolder;">Article Exchange Request</div>
</div>
</div>
<div class="row-form clearfix">
<div class="span3">Title</div>
<div class="span9"><input type="text" name="title" value="" placeholder="main subject title"></div>
</div>
<div class="row-form clearfix">
<div class="span3">First Sentence</div>
<div class="span9"><input type="text" name="s1" value="" placeholder="Sentence with max of 200 characters"></div>
</div>
<div class="row-form clearfix">
<div class="span3">Second Sentence</div>
<div class="span9"><input type="text" name="s2" value="" placeholder="Optional sentence with max of 200 characters"></div>
</div>
<div class="row-form clearfix">
<div class="span3">Third Sentence</div>
<div class="span9"><input type="text" name="s3" value="" placeholder="Optional Sentence with max of 200 characters"></div>
</div>
<div class="row-form clearfix">
<div class="span3">Website Url</div>
<div class="span9"><input type="text" name="link" value="" placeholder="Url to be included in articles"></div>
</div>
<div class="row-form clearfix">
<div class="span3">Website Url Title</div>
<div class="span9"><input type="text" name="link_text" value="" placeholder="Url text to be included in articles limit 150 characters"></div>
</div>
<div class="row-form clearfix">
<div class="span3">Credit Offer</div>
<div class="span9"><input type="text" name="cost_value" value="" placeholder="Example: 100"></div>
</div>
</div>
</form>
</div>
问题是有人可以在没有输入任何数据的情况下提交表单,并且仍然提交,并将空结果添加到数据库中的每一列。含义数据库中未设置NULL值。
我的表单处理
<?
if (isset($_POST[cost_value])) {
$stmt = $db->prepare("SELECT credits from member_credits WHERE username = :username");
$stmt->bindParam(':username', $username);
$stmt->execute();
$row = $stmt->fetch();
$count = $row[credits];
if ($count > $_POST[cost_value]) {
$stmt = $db->prepare('INSERT INTO article_requests (title, s1, s2, s3, link, link_text, offer, username) VALUES (:title, :s1, :s2, :s3, :link, :link_text, :offer, :username)');
$stmt->bindValue(':title', $_POST[title]);
$stmt->bindValue(':s1', $_POST[s1]);
$stmt->bindValue(':s2', $_POST[s2]);
$stmt->bindValue(':s3', $_POST[s3]);
$stmt->bindValue(':link', $_POST[link]);
$stmt->bindValue(':link_text', $_POST[link_text]);
$stmt->bindValue(':offer', $_POST[cost_value]);
$stmt->bindValue(':username', $username);
$stmt->execute();
}
}
?>
我希望在提交时发生的是如果在表单中没有输入值,则应将其设置为NULL ...这意味着如果未设置$ _POST [cost_value],则表单将不会提交。现在看来,总是看到$ _POST [cost_value]被设置 - 有时候是$ _POST [cost_value] ='100'这样的值;和其他时间$ _POST [cost_value] ='';但在这两种情况下,表格都会提交。同样我有数据库集,所以只有s2和s3的值应该是null,但是当所有提交为空而不是null时,那几乎是无用的。
我到底错过了什么?为什么不说$ _POST [cost_value] = NULL;如果用户没有输入值?为什么提交''??我觉得它会成为我忽视的基本东西,我只是看不到它......
更新明确
我知道有很多方法可以解决这个问题。我可以使用if then then test,我可以使用临时变量,我可以检查值本身是否是''。我知道周围的工作是什么。我不明白为什么需要它们。为什么我每周都使用if isset制作表单,并且每天都有效。如果表单没有来自用户的值输入,则表单将不会提交,因为if isset返回false。那么为什么它在这个特定的形式上提交''而不是说'isset不处理。
答案 0 :(得分:1)
//为帖子分配一个var。
notifyDatasetChanged()
//确保清理var(提交时没有有趣的业务)
$DIRTY_Var = $_POST['varinputname'];
//检查var是否为空,或者是否有值。如果为空,则将var设置为null;
$CLEAN_Var = filter_var($DIRTY_Var,` FILTER_SANITIZE_STRING);
答案 1 :(得分:-1)
尝试
func changeFontSize()
{
var coefficient = 1.0
switch device{
case iPadPro:
coefficient = 1.2
case iPhone5:
coefficient = 0.9
case iPhone4:
coefficient = 0.8
...
updateFontSizeInApplication(coefficient)
}
//你的代码 }