2017-05-14 1 views
1

Also, was ich wirklich gerne tun würde, ist die Kombination der beiden Abfragen. Ich habe sie in zwei geteilt, um mir zu helfen herauszufinden, wo das Problem liegt. sql2 ist, wo das Problem ist. Wenn ich es in phpMyAdmin (ohne WHERE) ausführe funktioniert es so, was ist hier los?Problem mit einer Abfrage, var_dump sagt bool (false)

$holidayID = formval('holidayID'); 

      $sort= formval('sort', 'rating'); 
      $dir = formval('dir', 'ASC'); 

      $sql = "SELECT recipeID, holidayID, recipeName, rating 
       FROM recipes 
       WHERE holidayID = $holidayID 
      ORDER BY $sort $dir "; 
//execute 

$result = mysqli_query($dbc, $sql); 

$sql2 = "SELECT recipes.holidayID, holidays.holidayName 

      FROM recipes 
      JOIN holidays ON recipes.holidayID=holidays.holidayID 
      WHERE holidayID = $holidayID 
      LIMIT 1"; 
$result2 = mysqli_query($dbc, $sql2); 

var_dump($result2); 

Die erste Abfrage funktioniert einwandfrei. Was mache ich falsch? Vielen Dank für Ihre Zeit.

+0

ist Ihr Code auf SQL-Injektionen anfällig. Bitte lernen Sie [vorbereitete Aussagen] (https://www.youtube.com/watch?v=nLinqtCfhKY). –

+2

Obwohl es scheint, dass die 'holidayID'-Spalte mehrdeutig ist - müssen Sie sie angeben - ist es aus der 'recipes' oder' holidays' Tabelle? – Qirel

+0

Sie vergleichen 'recipes.holidayID' mit' holidays.holidayID'. Wenn Sie später 'holidaidID' angeben, weiß es nicht, in welcher Tabelle gesucht werden soll. Geben Sie es manuell an oder besser noch, Sie sollten es wahrscheinlich nur haben ein 'ID'-Feld in der 'holidays'-Tabelle :) –

Antwort

1

Das Problem mit Ihrer Anfrage ist, dass die holidayID in Ihrem WHERE Zustand nicht eindeutig ist - MySQL weiß nicht, ob Sie von der recipes oder holidays Tabelle bedeuten. Geben Sie es, wie Sie tun, wenn die Auswahl und Zusammenfügen,

SELECT recipes.holidayID, holidays.holidayName 
FROM recipes 
JOIN holidays ON recipes.holidayID=holidays.holidayID 
WHERE holidays.holidayID = $holidayID -- Specify the column, here its holidays 
LIMIT 1 

Sie sollten auch beachten, dass diese Abfrage auf SQL-Injection verwundbar sein könnte, und dass Sie vorbereitete Anweisungen verwenden, um Ihre Datenbank vor, dass zu schützen.

richtige Fehlerberichterstattung verwenden, mit mysqli_error($dbc); würde MySQL dies auch gesagt, du hast.