我正在使用PHP从表单中插入日期。我有24个字段,用户可以在数据库中插入数据。问题是,如果用户将空字段留空,我如何不允许空字段成为MySQL中的行呢?所有字段都不是必填字段,并且字段格式化为输入文本字段。我考虑使用的是查询后值节中的if语句;下面是一个示例:
/**************
* HTML Form
**************/
<form action='insert.php' method='post'>
<p> What items do you have for sale?</p>
Item 1: <input type='text' name='item1'> Price: <input type='text' name='item1cost'>
Item 2: <input type='text' name='item2'> Price: <input type='text' name='item2cost'>
Item 3: <input type='text' name='item3'> Price: <input type='text' name='item3cost'>
<input type="submit" name="Submit" value="Submit">
</form>
/**************
* PHP
**************/
$user = (from $_SESSION)
$item1 = $_POST['item1'];
$item1cost = $_POST['item1cost'];
$item2 = $_POST['item2'];
$item2cost = $_POST['item2cost'];
$item3 = $_POST['item3'];
$item3cost = $_POST['item3cost'];
/*********************
* MySQL INSERT query
*********************/
$query = "INSERT INTO monthly_expenses (`userid`, `item`, `amount`)"
. "VALUES ($user,'$item1', '$item1cost'),
($user,'$item2', '$item2cost'),
($user,'$item3', '$item3cost'),如果用户将任何一个字段留空,我如何才能让它们不插入到数据库中,这样就不会有只有userid的空行?
发布于 2012-12-12 00:21:40
您可以将值放入数组中,然后检查它们是否为空(可能会建议进行其他一些安全检查),并创建$values变量,您可以将其加载到数据库中。
$item[0] = mysql_real_escape_string(trim($_POST['item1']));
$itemcost[0] = mysql_real_escape_string(trim($_POST['item1cost']));
$item[1] = mysql_real_escape_string(trim($_POST['item2']));
$itemcost[1] = mysql_real_escape_string(trim($_POST['item2cost']));
// and so on
$values = "";
for ($i = 0; $i < 2; ++$i) {
if ($item[$i] != "" && $itemcost[$i] != "") {
$values .= "($user,'$item[$i]', '$itemcost[$i]'),";
}
}
/*********************
* MySQL INSERT query
*********************/
if ($values != "") {
$values = substr($values, 0, -1);
$query = "INSERT INTO monthly_expenses (`userid`, `item`, `amount`)"
. " VALUES $values";
}也可以将HTML输入字段名作为数组,如item[],并将其直接解析为php数组。
发布于 2012-12-12 00:39:58
在摆造型之前使用客户端验证。如果没有按照您的要求填写表单,则会通知用户并强制用户这样做。
请参阅此以获取帮助。
发布于 2012-12-12 00:56:19
您可以将html存储为数组值。
<input type="text" name="item[]" />
<input type="text" name="itemcost[]" />然后,您可以像这样循环它们:
$query = "INSERT INTO monthly_expenses (`userid`, `item`, `amount`) VALUES ";
foreach($_POST['item'] as $key => $value){
{
// Check if it's not filled.
if($value !== '')
{
$query .= "($user, '$value', $_POST['itemcost'][$key])"; // whatever you need to insert.
}
}
// Run the query.我可能有一些打字错误,但概念是存在的。
https://stackoverflow.com/questions/13823946
复制相似问题