【问题标题】:PHP sql- If row value equals this, then echoPHP sql-如果行值等于这个,则回显
【发布时间】:2018-03-16 09:32:24
【问题描述】:

插入数据的 php-joomla 数据库。每个插入都是新行。 在我按下“提交”后,下拉框中的每个选择都应该根据选择的值做一些事情。 在当前状态下,我想做的是“如果行值等于这个,那么就做那个。我这样做的方式到目前为止还行不通,它不接受“如果行等于这个,那么做这个”语句,并且总是转到“else”。我曾想过“不等于”=!但这对于下拉框中的许多选择并不实用。

编辑: 此外,数组的结果是

stdClass Object ( [FieldValue] => over 18 years) 

如何只显示“18 岁以上”?

<?php

    // Get a db connection.
    $db = JFactory::getDbo();

    // Create a new query object.
    $query = $db->getQuery(true);

    // Select all records from the user profile table.
    // Order it by the ordering field.
    $query->select($db->quoteName(array(FieldValue)));
    $query->from($db->quoteName('tablevalues'));
    $query->where($db->quoteName('SubmissionId') . ' = '. $db->quote('2'));
    $query->and($db->quoteName('FieldName') . ' = '. $db->quote('age'));

//fieldname age 是存储年龄的地方。下拉选项是 1. 18 岁以上 2. 18 岁以下。

    // Reset the query using our newly populated query object.
    $db->setQuery($query);
    $row = $db->loadObjectList();
    echo nl2br("\n");
    print_r($row['5']);  

//5 是“年龄”字段框。当我完成当前问题时,我需要找到一种方法来说出“字段名年龄”。 //另外,尝试了print_r($row['5'])FieldValue,结果还是一样。

    echo nl2br("\n");
    if($row['5']=="over 18 years")
    {
        echo "5";
    }
    else
    {
        echo "10";
    }
    echo nl2br("\n");

//总是显示10

    // Load the results as a list of stdClass objects (see later for more options on retrieving data).
    $results = $db->loadObjectList();
    ?>

【问题讨论】:

    标签: php mysql joomla


    【解决方案1】:

    您说$row['5'] 包含您要检查的值。

    //5 是“年龄”字段框

    但是,您正在检查另一个字段是否相等,即$row['27']

    目前尚不清楚您要实现的确切目标,但可以回答为什么您总是看到它进入else 块并显示10 的问题。我无法查看您的数据,但您应该使用关联字段名称(即 $row['age'])正确处理字段名称,以确保始终定位正确的字段。

    没有参数的loadObjectList() 方法返回一个行数组,而不是单行。

    在此处查看文档:https://docs.joomla.org/Selecting_data_using_JDatabase#loadObjectList.28.29


    更新

    如你所说:

    数组的结果是

    stdClass Object ( [FieldValue] =&gt; over 18 years)

    你进一步询问如何访问这个值,你就这样访问它(因为这是一个对象,而不是一个数组)。

    $row-&gt;FieldName

    【讨论】:

    • 抱歉,第 '27' 行是我更改后在此处发布的原始代码。已编辑,请相应回答。那么,如何只返回行值,而不是数组?
    • @SolomonG 查看我的更新 - 如果这有帮助,请考虑将其标记为已接受的答案并点赞。谢谢。
    • 试过 print_r($row['5])->FieldName;和 print_r($row['5])->FieldValue;结果还是一样。还尝试了 $results = $db->loadObjectList(); 的变体;它总是显示一个数组。
    • print_r($row['5])-&gt;FieldName ?那是无效的 php 语法。你应该试试echo print_r($row['5']-&gt;FieldName, true);
    • 实际代码为 print_r($row['27'])->FieldValue;这有效,但仍然显示 stdClass 对象( [FieldValue] => 超过 18 年。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-19
    • 1970-01-01
    • 1970-01-01
    • 2015-07-23
    • 1970-01-01
    • 1970-01-01
    • 2013-01-24
    相关资源
    最近更新 更多