【问题标题】:Validate with arrays使用数组验证
【发布时间】:2015-06-02 12:03:56
【问题描述】:

我正在尝试寻找一种更智能的方法来使用 PHP 验证我的输入。如果数组找到一个空字段,它必须向数组中添加一个新元素并显示错误消息。

到目前为止,我还没有成功。

背后的代码

$felter = array();

if(isset($_POST['submit'])) {

        $produktnavn = $_POST['produktnavn'];
        $kategori = $_POST['kategori'];

        if( !empty( $felter ) ) {

            foreach ($felter as $felt) {
                if ($felter == '') {
                    $fejl = true;
                }
            }            

        }

        else {

            $sql = "UPDATE produkt SET produkt_navn = '$produktnavn', fk_kategori_id = '$kategori' WHERE produkt_id=$id";
            mysqli_query($db, $sql);

            echo "Produktet blev opdateret";

        }

输入表单

<input type="text" class="form-control" name="produktnavn" value="<?php echo $produktnavn; ?>">

【问题讨论】:

  • 那么,您的代码是否有效?
  • 您遇到了什么错误?请将它们包含在问题中,NOT 包含在 cmets
  • 尝试将if ($felter == '') { 更改为if ($felt == '') {,因为$felter 是一个数组
  • 我没有收到任何错误,我认为我没有以正确的方式定位输入字段。如果有任何错误,我会把它们放在线程中。
  • 如果您正在检查数组$felter 是否不为空,您可以通过确保该数组上的count 方法高于0 来检查,并确保$felter是一个可以运行is_array($felter) 的数组——正如前面评论中提到的,!empty 是一个字符串运算符。最后,您应该检查您的 $_POST 变量是否已初始化和定义,您可以使用 isset($_POST['produktnavn']) 作为示例。哦,还有一件事——你会想要清理来自任何来源的输入。永远不要相信未经检查的用户提交的数据。

标签: php arrays validation


【解决方案1】:

代码以$felter = array(); 开头,它初始化一个空数组。

然后,在不更改数组本身的情况下,您正在检查 $felter 的非空性

if( !empty( $felter ) ) {
            foreach ($felter as $felt) {
                if ($felter == '') {
                    $fejl = true;
                }
            }             
        }

您正在尝试迭代一个尚未将任何元素推入其中的数组。并且逻辑语句if( !empty ($felter)) 也不会按预期工作。

作为测试,在检查 !empty 之前,在数组中放入带有 $felter[] = 'Test word'; 的内容,然后在其下方...(如果您正在寻找非空数组,逻辑检查器可以是 @ 987654326@ 在使用foreach ($felter as $felt) { if ($felt == '') 遍历数组之前

$felter = array();
$felter[] = 'Test word';

if(isset($_POST['submit'])) {

    $produktnavn = $_POST['produktnavn'];
    $kategori = $_POST['kategori'];

    if( count( $felter ) ) {
            foreach ($felter as $felt) {
                if ($felt == '') {
                    $fejl = true;
                }
            }             
     }

【讨论】:

    猜你喜欢
    • 2017-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-09
    • 2017-05-28
    • 2016-02-22
    • 2020-07-30
    • 1970-01-01
    相关资源
    最近更新 更多