php - 变量未插入到表中

标签 php mysql database mysqli

我有一个非常简单的代码将数据插入数据库,还检查表中是否已有相同的数据

[HTML]

<html>
<head>
    <title>nickname</title>
</head>
<body>
    <p>input nickname</p>
    <form action="foo.php" method="post">
        <input type="text" name="nickname" />
        <input type="submit">
    </form>
</body>
</html>

[PHP]

//foo.php
if(isset($_POST['nickname']) && !empty($_POST['nickname'])) {
    $nickname = $_POST['nickname'];

    //Object Oriented way
    $servername = "localhost";
    $username = "root";
    $password = "foo_bar";
    $dbname = "nickname";

    //check connection
    $conn = new mysqli($servername, $username, $password, $dbname);

    if($conn->connect_error) {
        die("cannot connect:".$conn->connect_error);
    }

    $sql = "SELECT * FROM nickname WHERE nickname='$nickname'";
    $result = $conn->query($sql);

    if($result->num_rows > 0) {
        echo "nickname exists!";
    } else {
        $sql = "INSERT INTO nickname(nickname) VALUES(".$nickname.")";
        $conn->query($sql);
        echo "welcome $nickname!";
    }

    $conn->close();

} else {
    echo "please input your nickname";
}

我还在学习如何使用 MySQL,我做错了什么? 尤其是这一行

$sql = "INSERT INTO nickname(nickname) VALUES(".$nickname.")";
$conn->query($sql);

变量中的数据没有插入到表中,没有任何反应。 但如果我替换 $nickname以纯文本形式插入数据。

编辑
为什么这是重复的?问题甚至不是“如何防止sql注入(inject)”

最佳答案

给变量加上单引号

$sql = "INSERT INTO nickname(nickname) VALUES('".$nickname."')";
$conn->query($sql);

关于php - 变量未插入到表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42201636/

相关文章:

php - 'E5V7D24M10Y2015' 中的未知列 'where clause'

mysql - 向 MySQLCommand 添加 varchar 参数

php - 导致MySQL失败的特殊字符

php - 无法连接到数据库

javascript - 使用 Javascript 和 PHP 将数据表单传输到 mysql

php - 理解 mvc : difference between a library class and a model class

mysql - 在我的查询中 MYSQL CAST 不工作

ruby-on-rails - 使用 Gerrit 部署 Ruby on Rails 数据库

php - 静态类与单例类如何工作(数据库)

mysql - 多列子查询不适用于笛卡尔积