Php在插入数据之前进行清理

时间:2014-08-21 13:37:59

标签: php pdo

在将数据放入数据库之前,如何清理数据并检查是否为空?

我正在使用PDO

我的代码:

    $nameO = $_POST["name"];
    $number = $_POST["number"];
    $city = $_POST["city"];


    try {
        $sql = "INSERT INTO collection (name, citynumber, city) VALUES ('$number', '$nameO', '$city')";
        $sth = $db->query($sql);
    } catch(PDOExepction $e) {
        echo "SORRY!";
        exit;
    }

header( 'Location: www.site.com' ) ;

1 个答案:

答案 0 :(得分:2)

使用准备好的陈述:

$sql = "INSERT INTO joukkueet (name, citynumber, city) VALUES (:number, :nameO, :city)";
$statement = $db->prepare($sql);
$sth = $statement->execute( ['number' => $number, 'nameO' => $nameO, 'city' => $city] );

:number:nameO:city之类的内容是值的占位符。在PDO中使用$db->prepare函数可创建PDOStatement对象。现在,这个对象有一个方法execute,正如你所看到的,我们给它一个数组,其键对应于占位符名称。因此,如果在预准备语句中有:nameO,则数组应该具有键nameO的值,PDO将安全地添加到SQL代码中。

当然,最好在使用它们之前检查参数(例如,长度检查或确保$number是数字)。你要求检查它是否为空。

而不仅仅是:

$nameO = $_POST["name"];
$number = $_POST["number"];
$city = $_POST["city"];

我建议:

if (empty($_POST['name']) || empty($_POST['number']) || empty($_POST['city'])) {
    exit('Please input all data!');
}
$nameO = $_POST["name"];
$number = $_POST["number"];
$city = $_POST["city"];

当然,您可能希望以与exit停止相反的方式处理错误。但使用empty()进行检查可以保证变量中至少有一些数据。