2012-04-06 20 views
1

Ich habe Probleme mit Variablen in meiner SQL-WHERE-Klausel. Ich erhalte diese Fehlermeldung:Zeilen mit Variablen in where-Klausel zählen

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource

Der Code ist:

$sql3= mysql_query("SELECT COUNT($ww) FROM data WHERE $".$ww." = ".$weeknumber." "); 

Was mache ich falsch?

+2

Warum gibt es ein extra Dollar-Zeichen nur nach 'WHERE'? – Crontab

+0

Wissen Sie, was die Variablen. $ Ww. und. $ weeknumber wird zur Laufzeit ausgewertet? – contactmatt

+0

dieser zusätzliche Dollar ist es als Variable zu machen, koz $ ww ist der Zeilentitel in der Tabelle wider. –

Antwort

1

Warum nicht Sie die Spalte der Tabelle zählen, indem die Indienststellung Spalten Name in Ihrem COUNT (column_name)?

Wie so:

$sql3= mysql_query("SELECT COUNT(week_num) as wknum FROM data WHERE '$ww' = '$weeknumber'"); 
$counted_weeks["week_num"] 

// $counted_weeks["week_num"] will output your sum 
//week_num would be a column name from your "data" table 
+0

ja, gibt die Summe der Zeilen und ja ich habe Zählung der Cloumns Name, aber das Problem ist danach WO, ich habe ein Ergebnis wie diese Woche3 --- 2 und Woche3 ---- 2, also möchte ich nur eins bekommen week3 –

+0

ok ich bekomme es Arbeit thx –

0

Ich vermute $ww bezieht sich auf einen Spaltennamen. $weekNumber ist offensichtlich der Wert. In diesem Fall sollten Sie Ihre SQL-Abfrage wie folgt aussehen:

$sql3= mysql_query("SELECT COUNT(".$ww.") FROM data WHERE ".$ww." = ".$weeknumber." "); 

Ich bin kein PHP-Typ, aber ich nehme an, Sie die korrekte PHP-Syntax haben.

+0

ja sein columnname, aber dein Code hat nicht funktioniert und überhaupt nicht gezählt –

+0

können Sie die Abfrage zu einer Zeichenfolge zuweisen und mir die Ausgabe von ihm .. etwas wie $ sqlToRun = "SELECT COUNT (". $ Ww. ") FROM Daten WHERE ". $ ww." = ". $ weeknumber." "; sagen Sie mir den Wert in $ sqlToRun – Baz1nga

+0

und stellen Sie auch sicher, dass Sie eine Tabellendaten mit _data_ drin haben ..:/ – Baz1nga

0

Ich empfehle, diese link zu betrachten. Wie @Crontab erwähnt, bin ich nicht sicher, warum Sie ein Dollarzeichen vor Ihrer Where-Klausel haben.

Ein paar andere Dinge zu unterstreichen: Wie es in der Link sagt, müssen Sie sicherstellen, dass der Abfragetext ordnungsgemäß maskiert ist. Außerdem, wenn ich nicht irre (nicht mit PHP vertraut) müssen Sie den Text explizit verketten, anstatt nur Anführungszeichen zu verwenden? (dh statt "SELECT ..." ... "müssen Sie tun" SELECT ... "+" ... ")

0

php Zeichenfolge Formatierung ist perfekt hier, nehmen Sie Ihre chaotisch verwirrende concat Zeichenfolge und ! macht es sauber und gut lesbar

$sql3= mysql_query(sprintf("SELECT COUNT(%s) FROM data WHERE %s=%d", $ww, $ww, $weeknumber)); 
+0

funktioniert nicht :(. –

0

Unter der Annahme, dass $ww ein gültiger Spaltenname ist und $weekNumber eine ganze Zahl, sollte diese Arbeit:

$query = "SELECT COUNT(*) AS cnt FROM data WHERE $ww = '$weekNumber'"; 
$rs = mysql_query($query); 
$r = mysql_fetch_assoc($rs); 
echo "Count: {$r['cnt']}"; 
+0

Ich denke, $ ww ist eine Variable, deren Wert ist ein Spaltenname – Baz1nga

+0

Fehler mysql_fetch_assoc(): übergeben Argument ist keine gültige MySQL Ergebnis Ressource –

Verwandte Themen