Count abfrage mit PHP ausgeben?

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...
Woher ich das weiß:Berufserfahrung – Programmierer
Theroth 
Fragesteller
 16.02.2017, 16:47

Doch ich bekomme folgende Fehlermeldung:

Falls es irgendwie hilfreich ist, ich teste momentan in einer XAMPP installation und nicht auf einem Webserver.

Notice: Undefined variable: mysqli in C:\XAMPP\htdocs\Reader\reader.php on line 35

Fatal error: Uncaught Error: Call to a member function query() on null in C:\XAMPP\htdocs\Reader\reader.php:35 Stack trace: #0 {main} thrown in C:\XAMPP\htdocs\Reader\reader.php on line 35

Die Fehlermeldung bezieht sich auf folgenden Code:

<?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();

echo $row['anzahl'];
?>
0
Suboptimierer  16.02.2017, 17:26
@Theroth

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?

0

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