我是PHP和MySQL的新手。我无法想出这个简单的系统

时间:2013-07-06 04:55:00

标签: php mysql mysqli

    <?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>";

    ?>

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

我的数据库有一个&#34;用户&#34;表和数据库称为eme。数据库连接正确。

目前数据库中没有数据。我想我可以添加一些&#34; INSERT,&#34;但它失败了。

2 个答案:

答案 0 :(得分:1)

试试这个......

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

有关Quotes的详情,请查看此链接 - What is the difference between single-quoted and double-quoted strings in PHP?

答案 1 :(得分:1)

你有几个问题:

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

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

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

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

在插入数据之前,您还应该sanitize数据,以防止出现重大安全威胁。

最后,它本身并不是一个bug,但你应该总是使用字符串或整数值作为数组索引。

即。您有$_POST[FirstName],它应该是$_POST['FirstName']$_POST["FirstName"]

它仍然可以工作,但解释器认为它是一个常量,没有定义,所以假设字面值,抛出警告(可能是注意,不能记得随便)。这是不必要的开销。