0
    <?php
        $db = new mysqli("localhost","root","password","eme");

        if($db->connect_errno){ echo "Not connected."; exit();}

        echo $db->query("SELECT * FROM users") . "<br>";
        echo $_POST[FirstName] . " " . $_POST[LastName];
        $db->query("INSERT INTO users (FirstName, LastName) VALUES ('$_POST[FirstName]','$_POST[LastName]')");
        echo $db->query("SELECT * FROM users") . "<br>";

    ?>

我无法弄清楚为什么这段代码不起作用。唯一输出任何内容的行是 "echo $_POST[FirstName] . " " . $_POST[LastName];"

我的数据库有一个“用户”表,该数据库称为 eme。数据库连接正确。

目前数据库中没有数据。我想我可以用“INSERT”添加一些,但它失败了。

4

2 回答 2

1

你有几个问题:

mysqli 的 query() 方法返回一个mysqli_result对象。您需要使用其中一种方法从查询中获取实际数据。例如fetch_assoc()

在您的插入中,您需要分配$_POST['FirstName']给一个变量,或者将其显式添加到字符串中。

IE。

"INSERT INTO users (FirstName, LastName) VALUES ('" . $_POST['FirstName'] . "','" . $_POST['LastName'] . "')"

或者

$first = $_POST['FirstName'];
$last = $_POST['LastName'];
"INSERT INTO users (FirstName, LastName) VALUES ('" . $first . "', '" . $last . "')"

您还应该在插入数据之前对其进行清理,以防止出现重大安全威胁。

最后,它本身不是错误,但您应该始终使用字符串或整数值作为数组索引。

IE。你有$_POST[FirstName],它应该是$_POST['FirstName']或者$_POST["FirstName"]

它仍然可以工作,但解释器认为它是一个未定义的常量,因此假定为字面值,并发出警告(可能会注意到,不记得了)。这是不必要的开销。

于 2013-07-06T05:18:47.803 回答
1

尝试这个...

$db->query("INSERT INTO users (FirstName, LastName) VALUES('".$_POST['FirstName']."','".$_POST['LastName']."')");

有关更多信息Quotes,请查看此链接 - PHP 中单引号和双引号字符串有什么区别?

于 2013-07-06T04:58:00.093 回答