Count abfrage mit PHP ausgeben?
Ich würde gerne in einer PHP Datei eine SQLi Abfrage machen und diese anschließend ausgeben. Das Problem ist das es sich bei der Abfrage nur um einen Wert handelt, denn ich würde gerne eine Count abfrage machen zum Zählen der Werte. Ich habe viele mögliche Variationen aus dem Internet benutzt aber nicht hat wirklich funktioniert, jetzt muss ich selber mal fragen. Also ich bekomme zwei Werte per URL übergeben und prüfe ob es die Werte wirklich gibt mit einer Count abfrage nur will er die nicht ausgeben. Wie mache ich das?
Meine momentane PHP Datei
<?php
$user = $_GET["benutzername"];
$school = $_GET["schule"];
echo $user;
echo $school;
//Datenbankverbindung aufbauen
$connection = getDBConnection();
function getDBConnection(){
//Einstellungen der Datenbank
$dbusername = 'root'; //Benutzername
$dbpassword = ''; //Passwort
$dburl='localhost'; //URL
$dbname='androidapp'; //Datenbankname
$fehler1 = "Fehler 1: Fehler beim aufbauen der Datenbankverbindung!";
$link = mysqli_connect($dburl, $dbusername, $dbpassword,$dbname);
if (!$link) {
die('Verbindung schlug fehl: ' . mysqli_error());
}
/* check connection */
if (mysqli_connect_errno()) {
die($fehler1);
}
return $link;
}
$sqlStatement = "SELECT COUNT(*) AS anzahl FROM personen WHERE Schule=".$school."AND Benutzername=".$user;
$result = $mysqli->query($sqlStatement);
$row = $result->fetch_row();
?>
4 Antworten
$sqlStatement = "SELECT COUNT(*) AS anzahl FROM personen WHERE Schule=".$school."AND Benutzername=".$user;
Um der Schule-Variable fehlen SQL-Textbegrenzer, auch um den Benutzernamen. Vor dem AND würde ich ein Leerzeichen setzen.
Bekommst du denn keine Fehlermeldung?
In PHP kannst du die Variablen direkt in die Zeichenkette schreiben:
...schule = '$school' AND...
Oben schreibst du
$link = mysqli_connect($dburl, $dbusername, $dbpassword,$dbname);
und unten
$result = $mysqli->query($sqlStatement);
Könnte es damit zusammenhängen?
Wo wird $mysqli initialisiert?
Du willst einfach nur die Anzahl ausgeben?
Dafür am Ende einfach das einfügen:
echo $row['anzahl'];
BTW würde ich das Query eher so schreiben:
$sqlStatement = "SELECT COUNT(*) AS anzahl FROM personen WHERE Schule = '". $school ."' AND Benutzername = '". $user ."'";
Falsch war dabei nur, dass das "AND" bei dir direkt an die Variable $school gesetzt wurde (die Anführungszeichen sind einfach nur damit es von der Form her sauberer sowie etwas ressourcenschonender ist).
Hier eines meiner Beispiele:
$mysql_host = "localhost";
$mysql_user = "Website";
$mysql_pass = "Passwort";
$mysql_database = "DatenbankName";
$db = mysqli_connect($mysql_host,$mysql_user, $mysql_pass);
if(!$db) //MYSQLi Connection - Failed
{
echo "Connection failed";
}
if($db)
{
mysqli_select_db($db, $mysql_database);
$id = 0;
$query = mysqli_query($db, "SELECT * FROM Data WHERE id='". $id ."'");
$row = mysqli_fetch_array($query);
if(empty($row['counter'])) //MYSQLi Query - No Data
{
echo "Keine Daten vorhanden!";
}
else
{
echo "Der Counter hat bei ID=". $id ." den Inhalt: ". ($row['counter']));
}
}
Ich hoffe dir ist bewusst das du da mind. 2 gravierende lücken im code hast
Doch ich bekomme folgende Fehlermeldung:
Falls es irgendwie hilfreich ist, ich teste momentan in einer XAMPP installation und nicht auf einem Webserver.
Die Fehlermeldung bezieht sich auf folgenden Code: