gpt4 book ai didi

php - 为什么我的数据不能用 mysql_real_escape_string 正确剥离?

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

下面是我的代码:

    $studentTalking = mysql_real_escape_string($_POST['studentTalking']);

//Finally, we can actually the field with the student's information
$sql = <<<SQL
UPDATE `database` SET
`studentName`='$studentName',
`studentEmail`='{$data['studentEmail']}',
`studentPhone`='{$data['studentPhone']}',
`studentID`='{$data['studentID']}',
`studentTalking`= '{$studentTalking}',
`resume` = '{$data['resume']}'
WHERE `id`={$data['date_time']} AND (`studentName` IS NULL OR `studentName`='')
SQL;

我正在尝试使用 mysql_real_escape_string 来允许用户在我们的表单中输入的撇号在不破坏数据库的情况下进入数据库,但是数据要么作为空值通过,要么撇号将破坏数据库。我已经改变了我能想到的一切,但无法弄清楚为什么这不起作用。是的,我知道注入(inject)可能会破坏我们的数据库,我们将尽快将代码更新到 mysqli,但我们现在需要这个工作。我怀疑我的语法不正确,第一行可能需要移动到某个地方,但我不是最擅长 PHP 的,而且我正在使用以前实习生编写的代码。提前谢谢你。

最佳答案

切换到 mysqli_* 函数是正确的答案。

如果打算继续使用已弃用且危险的 mysql_* 函数,答案是:


这里你设置了一个新变量等于你转义的$_POST[]:

$studentTalking = mysql_real_escape_string($_POST['studentTalking']);

但在您的 SQL 中您仍然引用 $_POST 数组...切换您的 SQL 以使用您创建的新变量

$sql = <<<SQL
UPDATE `tgtw_rsvp` SET
`studentName`='$studentName',
`studentEmail`='{$data['studentEmail']}',
`studentPhone`='{$data['studentPhone']}',
`studentID`='{$data['studentID']}',
`studentTalking`= '$studentTalking',
`resume` = '{$data['resume']}'
WHERE `id`={$data['date_time']} AND (`studentName` IS NULL OR `studentName`='')
SQL;

关于php - 为什么我的数据不能用 mysql_real_escape_string 正确剥离?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46736963/

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