【问题标题】:How to echo a PHP variable from MySQL results如何从 MySQL 结果中回显 PHP 变量
【发布时间】:2018-08-17 07:46:10
【问题描述】:

为了使我的 PHP 自动生成 JSON,我将变量的名称保存在数据库中 (例如 >$test_value_1)。

在我的 php 文件中,我有这个变量的值(例如 > $test_value_1 = "TEST VALUE 1"

在此之后我执行一个查询来回显这个变量,但是,不是返回变量的值 (TEST VALUE 1),而是始终只返回保存在数据库中的文本 ("$teste_value_1")

为了更好地理解,请查看我的数据库、变量、查询、响应以及我需要什么:

表格:属性

   id_attribute |  attribue_string | attribute_value
    1            |  test_string_1  | $test_value_1
    2            |  test_string_2  | $test_value_2

变量:

$test_value_1 = "Test Value 1"; 
$test_value_2 = "Teste Value 2";

查询:

$query_array = mysqli_query($connect,"
    SELECT GROUP_CONCAT(CONCAT('{id:', a.attribute_string, ',value_name:', a.attribute_value, '}') SEPARATOR ', ') AS concat
    FROM rel_categories_attributes AS rca
    INNER JOIN categories AS c ON c.id_category = rca.categories_id_category
    INNER JOIN attributes AS a ON a.id_attribute = rca.attributes_id_attribute
    WHERE id_category = '{$id_category}'
    ");
WHILE ($reg_cat = mysqli_fetch_array($query_array)){

    echo $teste_query = $reg_cat["concat"] . ",";

回复: {id:test_string_1,value_name:$test_value_1}, {id:teste_string_2,value_name:$test_value_2},(错误)

我需要什么: {id:test_string_1,value_name:TEST VALUE 1}, {id:teste_string_2,value_name:TESTE VALUE 2}

【问题讨论】:

  • json_encode() 有什么问题?
  • 看在佛的份上,为什么要将 php 变量名存储在数据库中?
  • @nogad hehehe 因为我有很多不同的产品具有不同的属性和不同的值名称,所以,我认为这是自动获取所有信息的最佳方式
  • 你为什么不在数据库中有一个包含值的表,然后加入呢?
  • 真的没有,从来没有,有更好的方法来做到这一点

标签: php mysql json variables select


【解决方案1】:

虽然这似乎是一个糟糕的设计,但您可以使用 variable variables 来实现。但是您需要在 PHP 中进行输出格式化,而不是在 MySQL 中。

$query_array = mysqli_query($connect,"
    SELECT a.attribute_string, a.attribute_value
    FROM rel_categories_attributes AS rca
    INNER JOIN categories AS c ON c.id_category = rca.categories_id_category
    INNER JOIN attributes AS a ON a.id_attribute = rca.attributes_id_attribute
    WHERE id_category = '{$id_category}'
");

$result = array();
while ($row = mysqli_fetch_assoc($query_array) {
    $result[] = array('id' => $row['attribute_string'], 'value_name' => ${$row['attribute_value']});
}
echo json_encode($result);

但是,变量变量几乎总是可以通过使用关联数组来改进。不要使用$test_value_1$test_value_2 之类的变量,而是创建一个键为"test_value_1""test_value_2" 的数组,然后使用$array[$row['attribute_value']]

但更好的办法是将所有详细信息放入数据库本身,而不是将它们硬编码在脚本中。然后,您可以加入该表以将属性值转换为适当的字符串。

【讨论】:

  • 这个解决方案非常适合我!顺便说一句,我们确实有一个特殊的理由在数据库中列出变量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-06
相关资源
最近更新 更多