MySQL SELECT使用PHP变量给出的列名

时间:2018-01-06 23:50:48

标签: php mysql

我有一个用户表,其中有五列专门用于一周中每一天的短消息:'mon_subject','tue_subject'等,我用它来制作五个<选择>一周中每天的盒子。每天的用户列表将相同,但与其相关的主题将根据下拉列表而变化。我正在努力使我的数据库搜索算法更有效率,所以我没有做过五次数据库查询,我试过这个:

echo "<select>";
$sql = "SELECT * FROM users ORDER BY lastname ASC";
$usersResult = mysqli_query($db, $sql);
function genScheduleEditor($date) {
    include("mysqli_config.php");
    global $usersResult;
    //loop does this #of users times:
        $dayD = date("D", $date);
        $subjectDay = $dayD . "_subject"; //'Mon_subject' etc.
        $row = mysqli_fetch_array($usersResult,MYSQLI_ASSOC);
        $name = $row['username'];       
        $subject = $row['$subjectDay'];
        echo "<option>$subject etc.</option>;
}
echo "</select>";

这是该计划的要点。然后genScheduleEditor()将循环五个日期以产生五个&lt;选择&gt;框。问题是将变量放入

$row['$someColumnName']

似乎不起作用。我怎样才能解决这个问题,我不需要使用不同的列名进行五个数据库查询?

1 个答案:

答案 0 :(得分:0)

这行代码:

$subject = $row['$subjectDay'];

表示$row数组中的条目,其字符为 dollar-sign &#34; subjectDay&#34;。你想要的是变量:

$subject = $row[$subjectDay];

不要做'$x'"$x"之类的事情来避免这样的问题。它毫无意义,可能有害。