0

我在我的 2 步表单之一中使用此代码,这里我在步骤 2.php 验证表单输入并将其保存在会话中,然后在步骤 3.php 页面中我从会话中获取表单输入。此外,我将它们分配给 $formData 数组,因为我需要在最后阶段再次重新运行验证代码。

    $name = $formData["name"] = $string->formatInput($session->getSession("mechanic_buy_name"), 1);
    $garage_name = $formData["garage_name"] = $string->formatInput($session->getSession("mechanic_buy_garage_name"), 1, "None");
    $address = $formData["address"] = $string->formatInput($session->getSession("mechanic_buy_address"), 1);

这里 $string->formatInput("STRING GOES HERE" , 1) 是我的包装函数,它添加了addlashes函数。

假设我在车库名称中输入 ASWT 的技术

我使用这个 sql 查询将记录保存到数据库中

    $sql = "INSERT INTO ". TABLE_MECHANICS ."";
    $sql .= "(name, garage_name, address, town, county, postcode, mobile, landline, fax, email, website, services_other, start_date, duration, expiry_date, datecreated, datemodified) VALUES";
    $sql .= "('$name', '$garage_name', '$address', '$town', '$county', '$postcode', '$mobile', '$landline', '$fax', '$email', '$website', '$services_other', '$start_date', '$duration', '$expiry_date', NOW(), NOW())";
    $query = $mysql->query($sql);

但是当我通过 phpmyadmin 查看数据库时,我在引号前看不到任何转义字符

这就是garage_name 在 phpmyadmin ASWT 中显示的内容

而在应用了 addlashes ($string->formatInput(...)) 之后,它应该类似于 ASWT\'s\'。

请告诉我我错在哪里以及为什么不应用 addlashes 功能。

这个语法正确吗?

$name = $formData["name"] = $string->formatInput($session->getSession("mechanic_buy_name"), 1);

当我回显它时,$name 没有显示转义字符。

非常感谢任何帮助。

4

1 回答 1

0

如果您使用的是 mysql 扩展名(您不应该这样做),我会使用 mysql_real_escape_string 而不是添加斜杠。或者 mysqli_real_escape_string 如果你使用 mysqli 扩展。或者使用准备好的语句。

于 2013-03-23T22:19:58.220 回答