好的,我正在使用 strip_tags
当用户标记帖子时但当用户输入类似下面的示例中的内容时,摆脱 html。
我在数据库中输入了五个空值,我不希望其他一切都很好。我怎样才能阻止这个?
,,,,,,,, ,, ,,,,a,d, <html> , ruby-on-rails , ad, <html>
我将以下内容输入到数据库中注意逗号没有输入到数据库中。
, , , a, d, , ruby-on-rails, ad,
这是我的代码。
$tags = preg_split('/,/', strip_tags($_POST['tag']), -1, PREG_SPLIT_NO_EMPTY);
$tags = array_map('trim', $tags);
$tags = str_replace(' ', '-', $tags);
仅应将以下内容输入数据库。
a,d,ruby-on-rails,ad
这是我插入的一个简单示例。
for ($x = 0; $x < count($tags); $x++){
$query1 = "INSERT INTO tags (tag) VALUES ('" . mysqli_real_escape_string($mysqli, strtolower($tags[$x])) . "')";
}
最佳答案
您应该检查这些值是否为 empty() 。如果是,请从数据库插入查询中忽略它们或将它们标记为“null”。
在没有看到数据库表设计或任何处理数据库的代码的情况下,很难说我们如何更好地帮助您。
更新
使用 INSERT 查询中的新信息,以下是如何应用空(未经测试的待处理语法错误):
$tags = array_filter($tags, function ($v) { return !empty($v);});
for ($x = 0; $x < count($tags); $x++){
$query1 = "INSERT INTO tags (tag) VALUES ('" . mysqli_real_escape_string($mysqli, strtolower($tags[$x])) . "')";
}
应该从数组中删除空值,等待我没有犯一个简单的错误。
编辑
这是一种选择,但是是的。由于您已经在使用循环,因此只需在循环内添加 if 即可。使用 array_filter 它应该从数组中删除所有空值。
移动了函数定义。以上应该有效。
关于PHP 和 MySQL 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3442599/