由于某种原因,我无法连接到数据库。这是我的代码:
<?php
//only process form if $_POST isnt empty
if ( ! empty( $_POST ) ) {
// Connect to MySQL
$mysqli = new mysqli( 'localhost', 'username', 'password', 'database' );
//Check connection
if ( $mysqli->connect_error ) {
die( 'Connect Error: ' . $mysqli->connect_errno . ': ' . $mysqli- >connect_error );
}
//Insert form data
$sql = "INSERT INTO user ( Name, Username, Password, Email ) VALUES
( '{mysqli->real_escape_string($_POST['Name'])}',
('{mysqli->real_escape_string($_POST['Lastname'])}',
('{mysqli->real_escape_string($_POST['Username'])}',
('{mysqli->real_escape_string($_POST['Password'])}' )
('{mysqli->real_escape_string($_POST['Email'])}' )";
//Print response from MySQL
if ( $insert ) {
echo "Success! Row ID: {$mysqli->insert_ID}";
}else{
die("Error: {$mysqli->errno} : {$mysqli->error}");
}
//Close our connection
$mysqli->close();
}
?>
答案 0 :(得分:1)
应该执行sql以返回结果list
示例:$insert
(并且,如上所述,使用准备好的陈述更安全。)
答案 1 :(得分:1)
切勿在{{1}}中使用$_POST[]
或任何用户提交的数据 直接 。
改为使用Prepared Statements!
如果PHP代码打印到屏幕上而不是由服务器解释;首先确保PHP文件使用有效的PHP扩展名,例如SQL Insert
而不只是.php
还要确保为您的Web服务器安装了php模块(对于IIS,这将是针对Apache的不同说明)。
此外,您的代码缺少实际的query
本身,使用以下代码完成:
.html
然后其余代码将开始运行:
$insert = $mysqli->query($sql) // do the insert
没有if ( $insert ) {
echo "Success! Row ID: {$mysqli->insert_ID}";
}else{
die("Error: {$mysqli->errno} : {$mysqli->error}");
}
$mysqli->close();
您点击$mysqli->query($sql)
和else
有关详细信息,请参阅query
。
答案 2 :(得分:0)
if ( $insert ) {
echo "Success! Row ID: {$mysqli->insert_ID}";
这恰好回应了后续引号之间的内容(作为字符串)......
答案 3 :(得分:0)
脚本将继续点击die
语句,因为尚未设置$ insert。所以你是对的:它只是打印到屏幕上。
当您从“互联网”中复制并粘贴代码时,您忘记了一行 - 正如菲利普所指出的那样:
$insert = $mysqli->query($sql)
没有它,你的脚本唯一要做的就是创建一个连接并再次关闭它 - 或者,很可能:甚至没有设法关闭它,因为它会在它到达那条线之前死掉。 :)
您忘记的行应该在$ sql字符串之后但在使用$ insert的条件之前插入。