在 SQL 查询中使用 PHP 变量变量

Posted

技术标签:

【中文标题】在 SQL 查询中使用 PHP 变量变量【英文标题】:Using PHP variable variables in SQL query 【发布时间】:2009-04-03 22:44:57 【问题描述】:

很抱歉这个问题是一个“你能解决它吗”的问题,但是这段代码让我困惑了一段时间。

我基本上是在制作一个包含一堆行和列的表,并且在每个表中我都有一个稍微变化的 SQL 查询。为了使它更容易而不是全部输入,我编写了这个脚本,但它开始变得有点复杂,所以你们中的任何人都可以设法让它正确吗?

echo '<td background="images/map/';
$tile = mysql_fetch_array(mysql_query("SELECT image FROM map WHERE horizontal = $'mapPiece' . $mapPieceCount . [0] AND verticle = $'mapPiece' . $mapPieceCount . [0]"));
echo $tile[0];
echo '.png"></td>';

谢谢,斯坦尼

【问题讨论】:

【参考方案1】:

假设我的解释是正确的,[0] 需要超出花括号:

echo '<td background="images/map/';
$tile = mysql_fetch_array(
          mysql_query(
            "SELECT image FROM map WHERE horizontal = ".
            $'mapPiece' . $mapPieceCount[0].
            " AND verticle = ".
            $'mapPiece' . $mapPieceCount[0]
          )
        );
echo $tile[0]; 
echo '.png"></td>';

【讨论】:

【参考方案2】:

首先,您不能像在字符串上连接一样附加数组索引[0]。总体而言,如果您只添加几行以使事情更整洁,那会容易得多:

$currentPiece = 'mapPiece' . $mapPieceCount;
echo '<td background="images/map/';

$query = 'SELECT image '.
            'FROM map '.
            'WHERE horizontal = '.$$currentPiece[0].' '.
                'AND verticle = '.$$currentPiece[0];
$result = mysql_query($query);
$tile = mysql_fetch_array($result);

echo $tile[0];
echo '.png"></td>';

【讨论】:

以上是关于在 SQL 查询中使用 PHP 变量变量的主要内容,如果未能解决你的问题,请参考以下文章