PHP代码只是在屏幕上打印而不是运行

时间:2016-03-22 00:14:21

标签: php

由于某种原因,我无法连接到数据库。这是我的代码:

<?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();
}

?>

4 个答案:

答案 0 :(得分:1)

应该执行sql以返回结果list

示例:$insert

(并且,如上所述,使用准备好的陈述更安全。)

答案 1 :(得分:1)

警告:您的代码容易受到SQL Injection

的影响

切勿在{{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的条件之前插入。