gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 10:29:09 24 4
gpt4 key购买 nike

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

<?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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com