preg_replace in PDO


preg_replace in PDO

我正在使用preg_replace函数来确保输入的所有数据都是数字。

它看起来像这样:

$name = $_POST['name'];
if( isset( $name ) ) $name = stripslashes( strip_tags( $name ) );
$name = preg_replace('/[^0-9]/', '', $name);
if (isset($name)){
if(!preg_match('/^[0-9]+$/', $name)){
    echo '<br>Invalid data';
} else {
$stmt = $db->prepare("INSERT INTO categories(post_topic) VALUES(:name)");
$stmt->bindValue(':name', $name, PDO::PARAM_STR);
$stmt->execute();
}
}

但是当页面首次加载时,即使未设置$name,它也会显示无效数据。 我该如何使错误消息仅在值中包含无效字符时才显示?

您需要检查是否确实发生了开机自检。现在,您的代码无条件运行:

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    .... do your stuff here ...
}