2009-04-03 14 views
0

Sorry für diese Frage zu einem "Kannst du es beheben", aber dieses kleine Stück Code hat mich für eine Weile jetzt verwirrend.Verwenden von PHP-Variablen in SQL-Abfrage

Ich mache im Grunde eine Tabelle mit einer Reihe von Zeilen und Spalten und in jedem habe ich eine leicht ändernde SQL-Abfrage. Um es etwas einfacher zu machen, anstatt alles zu tippen, habe ich dieses Skript gemacht, aber es wird langsam komplizierter. Kann es irgendjemand von euch schaffen, es richtig zu machen?

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>'; 

Danke, Stanni

Antwort

5

Angenommen ich das richtig interpretiert, die [0] muss außerhalb der geschweiften Klammern gehen:

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>'; 
+0

Vielen Dank an Sie beide. – Ryan

4

Zunächst einmal können Sie die nicht anhängen Array-Index [0] so, wie Sie an einer Zeichenfolge verketten. Alles in allem wäre es viel einfacher, wenn Sie nur ein paar zusätzliche Zeilen hinzugefügt, um die Dinge besser zu machen:

$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>';