在将数据放入数据库之前,如何清理数据并检查是否为空?
我正在使用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' ) ;
答案 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()
进行检查可以保证变量中至少有一些数据。