Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP向MySQL数据库添加二进制复选框值_Php_Mysql_Database_Binary_Checkbox - Fatal编程技术网

使用PHP向MySQL数据库添加二进制复选框值

使用PHP向MySQL数据库添加二进制复选框值,php,mysql,database,binary,checkbox,Php,Mysql,Database,Binary,Checkbox,我是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>C

我是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
    $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);
        }
    }
?>

创建您的新闻页面
选中的组件将显示在页面中
标题

页脚
地方新闻
全国新闻
国际新闻
PHP文档编写如下:

<!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
    $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);
        }
    }
?>

我想您正在寻找MySQL'BOOL'-数据类型

编辑:
您的代码实际上加载了语法/代码错误。。。我不相信这是真的。您可以将原始内容粘贴到此处吗?

将存储表中值的字段设置为TINYINT(1),在提交时通过比较$\u POST['nameOfCheckboxField']和'on'检查复选框的状态,如果计算结果为真,则将1放入db字段,否则将0放入。

您应该立即将所有值放入查询中。
可以这样做:

$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\u real\u escape\u字符串调用。它将转义其参数中可用于SQL注入的所有字符。

如果表单中未选中复选框,则在提交表单时不会发送键/值对,因此需要检查是否已设置每个键/值对。因此:

$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);

是的,正如前面的海报所说,您应该将复选框值转换为1或0,然后保存在tinyint字段中。