php如何在ORDER BY字段()中引用变量

php如何在ORDER BY字段()中引用变量,php,mysql,Php,Mysql,我需要使用一个变量对一个表进行动态排序 变量$vid实例的var_转储为: string(9) "15,251,21" 这是一个查询示例: $sql=mysql_query("SELECT * FROM vcomp ORDER BY FIELD(version_id,$vid)"); 如果我放置硬数字,它确实有效,例如: $sql=mysql_query("SELECT * FROM vcomp ORDER BY FIELD(version_id,15, 251, 21)"); 我

我需要使用一个变量对一个表进行动态排序

变量$vid实例的var_转储为:

string(9) "15,251,21"
这是一个查询示例:

$sql=mysql_query("SELECT * FROM vcomp ORDER BY FIELD(version_id,$vid)");
如果我放置硬数字,它确实有效,例如:

    $sql=mysql_query("SELECT * FROM vcomp ORDER BY FIELD(version_id,15, 251, 21)");
我尝试了引号、倒勾等等,但没有成功。 谢谢

那么试试这个:

$ord = "version_id, ".$vid;
$sql=mysql_query("SELECT * FROM vcomp ORDER BY FIELD($ord)");
那么试试这个:

$ord = "version_id, ".$vid;
$sql=mysql_query("SELECT * FROM vcomp ORDER BY FIELD($ord)");

这太奇怪了。你的双引号版本应该可以用。尝试将SQL查询分配给一个变量并输出它。请执行
echo$SQL
查看它说了什么当您打印
mysql\u error()
时会出现什么错误?这是因为它看起来像这样
$SQL=mysql\u查询(“从vcomp ORDER BY FIELD(version\u id,“15,251,21”)选择*
。您不能按
排序15251,21“
,但是你可以通过
15,251,21
,这很奇怪..你有双引号的版本应该可以工作。尝试将SQL查询分配给一个变量并输出它。你能做一个
echo$SQL
看看它说什么吗打印
mysql\u error()时会出现什么错误
?这是因为它看起来像这样的
$sql=mysql\u查询(“从vcomp中选择*按字段排序(version\u id,“15,251,21”)
。您不能按
“15251,21”排序
,但你可以通过
15、251、21
我不知道这是否是最好的解决方法,但确实有效,Thanks@BernardA您甚至可以在
$ord
变量中轻松添加更多的order by字段,然后每次都处理查询语句我不知道这是不是最好的解决办法但确实有效,Thanks@BernardA您甚至可以在
$ord
变量中轻松添加更多的order by字段,然后每次都处理查询语句