Php mysql-使用变量时查询不工作

Php mysql-使用变量时查询不工作,php,mysql,sql,Php,Mysql,Sql,我当前有一个如下所示的查询: $sql = "SELECT * FROM Results ORDER BY '$SortBy' '$SortIn'"; $SortBy = $_POST['SortBy']; $SortIn = $_POST['SortIn']; 当我运行这个查询时,我没有收到任何错误,它显示了所有有问题的数据,但是,它没有正确地显示它 SortBy指表格字段(例如参考号) SortIn表示升序或降序 如果我在不使用变量的情况下运行查询,例如: $sql = "SELECT

我当前有一个如下所示的查询:

$sql = "SELECT * FROM Results ORDER BY '$SortBy' '$SortIn'";

$SortBy = $_POST['SortBy']; 
$SortIn = $_POST['SortIn'];
当我运行这个查询时,我没有收到任何错误,它显示了所有有问题的数据,但是,它没有正确地显示它

SortBy
指表格字段(例如参考号)
SortIn
表示升序或降序

如果我在不使用变量的情况下运行查询,例如:

$sql = "SELECT * FROM Results ORDER BY RefNo asc"
它工作正常,并按预期对数据进行排序。你知道如何使用变量使它工作吗?我有一个表单,用户可以选择如何对数据进行排序

将代码添加到表单中:

<form action="#" method="post" id="displayTimeTable">
<table>
<tr>
<td>
Sort table on =
<select name="SortBy">
<option value="RefNo" selected="selected">Reference Number</option>
<option value="Date">Date</option>
<option value="Amount">Amount</option>
</select>
</td>
<td>
Sort in =
<select name="SortIn">
<option value="asc" selected="selected">Ascending order</option>
<option value="desc">Descending order</option>
</select>
</td>
</tr>
</table>
<p>
<input type="submit" name="submit" value="Submit"/>
</p>
</form>

排序表=
参考号
日期
数量
整理=
升序
降序

做出建议的更改后,我收到以下错误:

警告:mysql_fetch_array()希望参数1是资源, 第37行给出布尔值

下面是它所指的代码(第37行是while语句):

$result=mysql\u查询($sql,$connection);
回声“;
回声“;
回显“参考编号日期金额”;
而($row=mysql\u fetch\u数组($result)){
回声“;
echo$row['RefNo'];
回声“;
echo$row['Date'];
回声“;
echo$row['Amount'];
回声“;
} 
回声“;

单引号表示字符串文本。由于变量包含列名和语法元素(例如
asc
desc
),因此需要丢失引号:

$sql = "SELECT * FROM Results ORDER BY $SortBy $SortIn";
# Here --------------------------------^-----^-^-----^

我已经解决了我的问题!我这方面很愚蠢。我所需要做的就是纠正布局,在此之前:

$sql = "SELECT * FROM Results ORDER BY $SortBy $SortIn";

$SortBy = $_POST['SortBy']; 
$SortIn = $_POST['SortIn'];
$SortBy=$\u POST['SortBy']
$SortIn=$\u POST['SortIn']的位置不正确,它需要在我的查询之前,而不是之后。。因此,我实际上是通过BLANK调用了ORDER

所以现在我的代码看起来是这样的,并且工作得非常完美,没有问题:)


你真的认为按“字段名称”asc排序是有效的语法吗?如果你比较你的查询,你会发现一个有引号,另一个没有。还有SQL注入。发布完整代码和用于此的API连接方法。在回答“警告:mysql_fetch_array()期望参数1是资源,给定布尔值”下的注释中看到此错误后,这表明混合了不同的mysql API,和/或查询失败。到目前为止,您发布的内容仍然是一个副本,因此关闭了它。一旦你这样做了,你可以打电话给我,希望穆雷尼克会调整答案,或者其他人可以帮助你,让我重新开始这个问题。我从一开始就在看这整件事,觉得我在这里花了足够的时间。嗨@Fred ii-,我添加了与我收到的错误相关的代码。连接,是什么;mysql,mysqli,pdo
mysql\u error()
如果您使用mysql\u进行连接,它会告诉您到底出了什么问题,php的错误报告也会告诉您。而且它缺少一个逗号。@shmosel-comma???@shmosel
$SortIn
不是另一个要排序的列,而是
asc
desc
。它们之间不需要逗号。你是对的,我没有看到。@thickguru你没有显示任何可能导致该错误的代码。
$sql = "SELECT * FROM Results ORDER BY $SortBy $SortIn";

$SortBy = $_POST['SortBy']; 
$SortIn = $_POST['SortIn'];
$SortBy = $_POST['SortBy']; 
$SortIn = $_POST['SortIn'];

$sql = "SELECT * FROM Results ORDER BY $SortBy $SortIn";