【问题标题】:Ambiguous variable in string PHP字符串PHP中的不明确变量
【发布时间】:2022-10-01 23:59:51
【问题描述】:
$optional_column = \"\"; // define empty variable

$sql = \"SELECT id {$optional_column} FROM table;\";

if (true) {
   $optional_column = \", name\";
}

echo $sql;

输出:从表中选择 id;

期望的输出:SELECT id, name FROM table;

在最初将 $sql 字符串定义为空之后,如何更改 {$optional_column} 的值?重新定义后返回空。

这是我正在使用的完整 php 文件:

$metadata_columns = [
    \'make\' => \'camera_brand\',
    \'model\' => \'camera_model\',
    \'lens\' => \'lens\',
    \'aperture\' => \'aperture\',
    \'iso\' => \'iso\',
    \'shutterspeed\' => \'shutter_speed\',
    \'photo-date\' => \'photo_date\',
    \'upload-date\' => \'upload_date\'
];

$group_column = \'\';

$sql = \"SELECT objects.id, objects.object_key, objects.object_name, objects.starred {$group_column} FROM objects\";

$conditions = [];
$parameters = [];

if (isset($_POST[\'search_params\']) && !empty($_POST[\'search_params\'])) {
    $search_params = $_POST[\'search_params\'];

    for ($i=0; $i<count($search_params); $i++) {
        $kp = explode(\':\', $search_params[$i]);
        $column = $metadata_columns[$kp[0]];
        $value = $kp[1];
        
        $conditions[] = $column.\' = ?\';
        $parameters[] = $value;
    }
}

$where_clause = \' WHERE trash IS NULL\';
if (!empty($conditions)) {
    $sql .= \' INNER JOIN object_metadata ON object.id = object_metadata.id\';
    $where_clause .= \" AND (\".implode(\" OR \", $conditions). \')\';
}
$sql .= $where_clause;

if (isset($_POST[\'group_by\']) && !empty($_POST[\'group_by\'])) {
    $group_column = $metadata_columns[$_POST[\'group_by\']];
    $sql .= \' GROUP BY \'.$group_column;
}

if (isset($_POST[\'sort_by\']) && !empty($_POST[\'sort_by\'])) {
    $sort_column = $metadata_columns[$_POST[\'sort_by\']];
    $sql .= \' ORDER BY \' .$sort_column;
}

echo $sql;

    标签: php


    【解决方案1】:

    向上移动

    $optional_column = ""; // define empty variable
    
    if (true) {
       $optional_column = ", name";
    }
    
    $sql = "SELECT id {$optional_column} FROM table;";
    
    echo $sql;
    

    【讨论】:

    • 对于我的情况,我在更改 $optional 列的值之前将其他条件连接到 $sql,所以我无法执行此操作
    猜你喜欢
    • 1970-01-01
    • 2013-03-30
    • 2019-04-19
    • 2010-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-28
    相关资源
    最近更新 更多