我是PHP的新手,我正在使用PHP和MySQL创建一个基本的CMS。我很难从我的HTML页面获取复选框信息到数据库中。
如何使值显示为二进制0或1值?
HTML文档编写如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Create your news page</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<fieldset>
<legend>Checked components will show in the page</legend>
<form method="POST" action="http://*********.php">
<span class="label">Header</span>
<input type="checkbox" name="header" value="HEADER">
<br>
<span class="label">Footer</span>
<input type="checkbox" name="footer" value="FOOTER">
<hr>
<span class="label">Local news</span>
<input type="checkbox" name="local" value="LOCALNEWS">
<br>
<span class="label">National news</span>
<input type="checkbox" name="national" value="NATIONALNEWS">
<br>
<span class="label">International news</span>
<input type="checkbox" name="international" value="INTERNATIONALNEWS">
<p>
<input type="submit">
</form>
</fieldset>
</body>
</html>
PHP文档编写如下:
<?php
$user="user_***";
$password="*********";
$database="dbxyz";
mysql_connect("localhost", $user, $password);
mysql_select_db($database, $db_handle);
mysql_select_db("dbxyz");
if(isset($_POST['layout']))
{
foreach($_POST['layout'] as $value {
$insert="INSERT INTO layout (header, footer, local, national, international) VALUES ('$value')";
mysql_query($insert);
}
}
?>
答案 0 :(得分:2)
您应该立即将所有值都放在查询中 可以这样做:
$values = array(
'header' => null,
'footer' => null,
'local' => null,
'national' => null,
'international' => null
);
foreach (array_intersect_key($_POST, $values) as $key => $value) {
$values[$key] = mysql_real_escape_string($value);
}
mysql_query("INSERT INTO layout (header, footer, local, national, international) VALUES ('$values[header]', '$values[footer]', '$values[local]', '$values[national]', '$values[international]')");
另外,请注意mysql_real_escape_string调用。它会转义其参数的所有字符,可用于SQL注入。
答案 1 :(得分:2)
如果未在表单中选中复选框,则在提交表单时不会发送键/值对,因此您需要检查是否已设置。所以:
$header = isset($_POST['header']) ? 1 : 0;
如果选中“标题”框,则此变量为1,否则为0。
$header = isset($_POST['header']) ? 1 : 0;
$footer = isset($_POST['footer']) ? 1 : 0;
$local = isset($_POST['local']) ? 1 : 0;
$national = isset($_POST['national']) ? 1 : 0;
$international = isset($_POST['international']) ? 1 : 0;
$insert = "INSERT INTO layout (header, footer, local, national, international)
VALUES ($header, $footer, $local, $national, $international)";
mysql_query($insert);
答案 2 :(得分:0)
我认为你正在寻找MySQL'BOOL'数据类型......
编辑: 你的代码实际上加载了语法/代码错误...我不相信这实际上运行。你可以在这里粘贴原件吗?
答案 3 :(得分:0)
创建将值存储在表TINYINT(1)中的字段,通过将$ _POST ['nameOfCheckboxField']与'on'进行比较来检查提交时复选框的状态,如果它的计算结果为true,则将1放入您的数据库字段,否则输入0。