首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用复选框将数据插入mysql数据库

使用复选框将数据插入mysql数据库
EN

Stack Overflow用户
提问于 2019-05-09 12:30:26
回答 3查看 99关注 0票数 -1

在这里我有点恼火,试了一堆东西,但都没有效果。我想为我的Magic做一个表单,Gathering fansite期末项目,在这个项目中,你可以选择复选框来填充数据库中的列,要么是字母,要么什么都不填。

<!Doctype html>
<html>

<head>
</head>

<body>
    <?php

    if (!empty($_POST)) {
        //connect to the database
        $mysqli = new mysqli('localhost', 'root', '', 'magic');
        //check the connection
        if ($mysqli->connect_error) {
            die('Connect Error: ' . $mysqli->connect_errno . ': ' . $mysqli->connect_error);
        }
        //insert the data
        $sql = "INSERT INTO decks ( DeckName, Author, CardList ) VALUES ( '{$mysqli->real_escape_string($_POST['DeckName'])}', '{$mysqli->real_escape_string($_POST['Author'])}', '{$mysqli->real_escape_string($_POST['CardList'])}' )";
        $insert = $mysqli->query($sql);
        //insert the checkbox data
        if (isset($_POST['Red'])) {
            $sql = "INSERT INTO decks ( Red ) VALUES ( '{$mysqli->real_escape_string('R')}' ) ";
        } else {
            $sql = "INSERT INTO decks ( Red ) VALUES (' ')";
        }

        //response from the database
        if ($insert) {
            echo "Success!";
        } else {
            die("Error, please try again!");
        }

        //kill the connection
        $mysqli->close();
    }
    ?>

    <form method="post" action="">
        <input name="DeckName" type="text">
        <br>
        <br>
        <input name="Author" type="text">
        <br>
        <br>
        <input type="checkbox" id="Red" name="Red"> <img src="red.png" alt="Red">
        <input type="checkbox" id="Blue" name="Blue"> <img src="blue.png" alt="Blue">
        <input type="checkbox" id="Green" name="Green"> <img src="green.png" alt="Green">
        <input type="checkbox" id="White" name="White"> <img src="white.png" alt="White">
        <input type="checkbox" id="Black" name="Black"> <img src="black.png" alt="Black">
        <br>
        <br>
        <input name="CardList" type="text">
        <br>
        <br>
        <input type="submit" value="Submit Form">
    </form>
</body>

</html>

如果复选框被选中,我希望它在列中放一个R,如果没有选中,则什么也不放入列中。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-05-10 03:55:33

if (!empty($_POST)) {
    //connect to the database
    $mysqli = new mysqli('localhost', 'root', '', 'magic');
    //check the connection
    if ($mysqli->connect_error) {
        die('Connect Error: ' . $mysqli->connect_errno . ': ' . $mysqli->connect_error);
    }
    //Do NOT insert the data HERE 

    // the checkbox data
    if (isset($_POST['Red'])) {
        $red = 'R';
    } else {
        $red = ' ';
    }
    $sql = "INSERT INTO decks ( DeckName, Author, CardList, Red ) VALUES ( '{$mysqli->real_escape_string($_POST['DeckName'])}', '{$mysqli->real_escape_string($_POST['Author'])}', '{$mysqli->real_escape_string($_POST['CardList'])}' , '{$mysqli->real_escape_string($red)}' )";
    $insert = $mysqli->query($sql);
    //response from the database
    if ($insert) {
        echo "Success!";
    } else {
        die("Error, please try again!");
    }
    // I put the value of (red) in the insert sql before executing it so must be done with all check boxes ! ALL MUST BE IN ONE INSERT SENTENCE 
    //kill the connection
    $mysqli->close();
}
?>

<form method="post" action="">
    <input name="DeckName" type="text">
    <br>
    <br>
    <input name="Author" type="text">
    <br>
    <br>
    <input type="checkbox" id="Red" name="Red"> <img src="red.png" alt="Red">
    <input type="checkbox" id="Blue" name="Blue"> <img src="blue.png" alt="Blue">
    <input type="checkbox" id="Green" name="Green"> <img src="green.png" alt="Green">
    <input type="checkbox" id="White" name="White"> <img src="white.png" alt="White">
    <input type="checkbox" id="Black" name="Black"> <img src="black.png" alt="Black">
    <br>
    <br>
    <input name="CardList" type="text">
    <br>
    <br>
    <input type="submit" value="Submit Form">
</form>

在您的代码中,您只是将sql语句设置为insert red,但并没有执行它,即使您这样做了,它也会在新行中包含其他列的空值,

我编写的代码在Red复选框中运行良好

票数 -1
EN

Stack Overflow用户

发布于 2019-05-09 13:00:42

尝试使用以下代码插入数据:

<?php

if ( !empty( $_POST) ) {
    //connect to the database
    $mysqli = new mysqli( 'localhost', 'root', '', 'magic' );

    //check the connection
    if ( $mysqli->connect_error ) {
        die( 'Connect Error: ' . $mysqli->connect_errno . ': ' . $mysqli->connect_error );
    }

    //insert the data
    $sql = "INSERT INTO decks ( DeckName, Author, CardList ) VALUES ( '{$mysqli->real_escape_string($_POST['DeckName'])}', '{$mysqli->real_escape_string($_POST['Author'])}', '{$mysqli->real_escape_string($_POST['CardList'])}' )";

    //insert the checkbox data
    if ( isset($_POST['Red']) ) {
        $sql = "INSERT INTO decks ( Red ) VALUES ( '{$mysqli->real_escape_string('R')}' ) ";
    } else { 
        $sql = "INSERT INTO decks ( Red ) VALUES (' ')";
    }

    //response from the database
    if ($mysqli->query($sql) === TRUE) {
        echo "Success!";
    } else {
        die("Error, please try again!");
    }

    //kill the connection
    $mysqli->close();
}
?>

从代码中删除此行$insert = $mysqli-> query($sql);,并将此if ($mysqli->query($sql) === TRUE) {替换为教程代码if ( $insert ) {

票数 0
EN

Stack Overflow用户

发布于 2019-05-09 14:49:49

In HTML
    <label> Language</label>
    <input type="checkbox" name="lan[]" value="eng">English
    <input type="checkbox" name="lan[]" value="tam">Tamil
    <input type="checkbox" name="lan[]" value="tel">Telugu
    <input type="checkbox" name="lan[]" value="hin">Hindi    
In php
    $lan=$_POST["lan"];
    $slan=implode[","$lan];
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56052225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档