<?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;但它失败了。
答案 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"]
它仍然可以工作,但解释器认为它是一个常量,没有定义,所以假设字面值,抛出警告(可能是注意,不能记得随便)。这是不必要的开销。