php - 为什么我的 PHP 代码在运行时返回空白页?

标签 php mysql sql database

在我的网页中,我要求用户填写一份表格,注明他们的年龄、种族、性别和州。提交后,数据被提交到同一页面,该页面将使用以下代码处理它以将其提交到数据库(本例中所有数据库登录信息都是伪造的):

<?php
if($_COOKIE['infoGiven']==true){    
    $con=mysql_connect('localhost','asasdfasd','asdf','asdfasdf');
    if($_COOKIE['like']==true){
        $sql="INSERT INTO LIKE(state, age, gender, race)
        VALUES(\'".$_POST["state"]."\'".$_POST["age"]."\'".$_POST["gender"]."\'".$_POST["race"].")";
        $con->query($sql);
    }
    if($_COOKIE['like']!=true){
        $sql="INSERT INTO DISLIKE(state, age, gender, race)
        VALUES(\'".$_POST["state"]."\'".$_POST["age"]."\'".$_POST["gender"]."\'".$_POST["race"].")";
        $con->query($sql);
    }
}
?>

这应该只是将用户数据提交到数据库,但我收到了一个带有“500”错误的空白页。里面没有代码。请记住,在提交表单之前,页面会正确呈现。

最佳答案

您在插入语句中缺少逗号;当您使用双引号时,您也不必转义单引号。

正如您现在的代码所示,您正在尝试插入一个真正连接的字符串。

$sql="INSERT INTO LIKE(state, age, gender, race)
        VALUES(\'".$_POST["state"]."\'".$_POST["age"]."\'".$_POST["gender"]."\'".$_POST["race"].")";

应该是:

$sql="INSERT INTO `LIKE`(state, age, gender, race)
        VALUES('".$_POST["state"]."', '".$_POST["age"]."', '".$_POST["gender"]."', '".$_POST["race"]."')";

但这只是为了说明参数的标点符号问题:不要使用该代码本身,因为替代方案更安全且更少被弃用。

使用 mysqli 准备好的语句的更好版本:

$db = new mysqli("DBHOST","DBUSERNAME","DBPASS","DBNAME");
$stmt = $db->prepare("INSERT INTO `LIKE`(state, age, gender, race) VALUES (?,?,?,?)");

$stmt->bind_param('i', $VALUE)

^ 像这样绑定(bind)参数。第一个参数是第二个参数的类型(在本例中为整数,“s”表示字符串等)。 $VALUE 是要绑定(bind)的变量。 绑定(bind)的参数数量必须与占位符/问号的数量相匹配;这份准备好的声明预计有四个。

要在一行中绑定(bind)多个参数,您可以使用格式 bind_param('sss', $string1, $string2, $string3) 来选择一个示例。然后:

$stmt->execute();
$stmt->close();

我还会检查您的连接对象,以确保它使用实际登录信息成功连接到数据库。除此之外,不要忘记在输入进入数据库之前对其进行清理/验证。 This covers it well .

关于php - 为什么我的 PHP 代码在运行时返回空白页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47746090/

相关文章:

PhpOffice\PhpSpreadsheet 多个工作表不工作

php - PHP 中另一个查询的 for 循环中的 MySQL 查询

php - 在一张表中垂直显示从数据库中检索到的数据

php - 使用变量从mysql获取数据

python - PostgreSQL 日期时间类型的最佳数据类型

PHP 游戏 session 不工作

php - 如何防止 PHPStorm 在启动时打开项目?

php - mysql/php sql 语句逻辑错误

mysql - 将所有字段分组在一行中

mysql - SQL 存储过程