php Fehler beim auslesen einer MySQL tabelle?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Versuch mal die Datenabfrage die dein Skript sendet per var_dump oder so auszugeben und Prüfe ob da wirklich eine Richtige Ausgabe kommt.

Wenn du phpmyadmin oder so auf dem Server hast, dann kopiere die Ausgabe deines PHP Skripts und führe die über Phpmyadmin als SQL Anfrage aus und schau nach ob da was zurück kommt.

Außerdem gibt es noch einen Fehler in deinem PHP:

  1. verwende mysqli und nicht mysql.
  2. mysqli_fetch_row braucht eine Resource als Argument du übergibst hier den SQL String.

Du musst den SQL String erst an die Datenbank senden zB mittels mysqli_query. Die Funktion gibt dir dann ein mysqli_result Objekt zurück und das kannst du jetzt als Argument für die Funktion mysqli_fetch_row verwenden.

Also ich hab den String, der mit $var übergeben wird nochmals geprüft und der funktioniert auch. Ich habe zudem den Code, wie folgt geändert:

function sendRequest($var) {


echo $var;

$results = array();

$statement = mysqli_query($connection, $var);

//Alle betroffenen Daten auslesen
while ($row = mysqli_fetch_row($var)) {
$results[] = $row['Name'] .. $row['Typ'] . . $row['Adresse2'];
}
echo json_encode($results);
}

Allerdings bekomme ich immer noch nur [] zurück

0
@PeterKremsner

$Connection war bereits weiter oben definiert, habs nur vergessen zu kopieren. aber geht immer noch nicht

function sendRequest($var) {


$connection = mysqli_connect("localhost", "seminar", "ty9dUB8sHtdJepsy", "Eventapp");

$results = array();

$statement = mysqli_query($connection, $var);

//Alle betroffenen Daten auslesen
while ($row = mysqli_fetch_row($statement)) {
$results[] = $row['Name'] . " - " . $row['Typ'] . " - " . $row['Adresse2'];
}
echo json_encode($results);
}
0
@MaXXi1502

Ok dann aktiviere im php die Fehler Ausgabe und die Warnungen.

Zudem schau nach ob mysqli_query false zurückgibt.

Wenn ja dann lass dir den Fehler ausgeben und schreib ihn. Ohne Fehlermeldungen kann ich dir nicht mehr weiterhelfen.

0
@maximilianus7

In der neuen Funktion die er gepostet hat ist es definiert.

Er macht zwar die Verbindung immer wieder neu auf aber funktionieren sollte es so auch.

0
@MaXXi1502

Alles klar dann schau dir mit var_dump mal das $row objekt an.

Btw hast du schon $statement geprüft ob das ungleich false ist?

0

ich biete mal wieder gleich das PDO model an

https://github.com/sheinatz/tools/tree/master/download

dazu kommt natürlich das man eine GET variable sowieso so nicht benutz , das ist ein ganz großer Fehler .

hier mal mein komprimierter vorschlag um deine elseif weg zu bekommen


// https://github.com/sheinatz/tools/tree/master/download
include 'init.php'; // bitte die Daten anpassen .
// https://github.com/sheinatz/tools/tree/master/download
include 'database.php';

// Dein Programm
$gets = array('Ort'=>'Adresse2','Typ'=>'Typ','Name'=>'Name');

$Limit = "0,10";

$fields = array();
$wheres = array();
$values = array();

foreach ($gets as $get=>$field) {
if (isset ( $_GET[$get] )) {
$fields[] = $field;
$wheres[] = $field." = :$get ";
$values[":".$get]= $_GET[$get];
}
}
foreach
$sql = array("query"=>"SELECT ".implode(",", $fields)." FROM Eventapp.Event WHERE ".implode(" AND ",$wheres)." LIMIT $Limit",
"binds"=>$values;
);
try {
if ($anarray = getArraySQL($sql,$dbs)) {
foreach ($anarray as $arow) {
echo json_encode(implode('-',$arow));
}
} else { echo "keine Daten"; }
}
catch(PDOException $e) {
echo "Error Query the Database ".$e->getMessage();
}

ungetestet , sollte aber genau das machen


ffff


0
@RakonDark

ein paar fehler haben sich eingeschlichen und das $_GET['Limit'] hab ich übersehen .

//  
include 'init.php'; // bitte die Daten anpassen .
//
include 'database.php';

// Dein Programm
$gets = array('Ort'=>'Adresse2','Typ'=>'Typ','Name'=>'Name');

$Limit = "0,10";

$fields = array();
$wheres = array();
$values = array();

foreach ($gets as $get=>$field) {
if (isset ( $_GET[$get] )) {
$fields[] = $field;
$wheres[] = $field." = :$get ";
$values[":".$get]= $_GET[$get];
}
}

if (isset($_GET['Limit'])) {$values[':limit']=>$_GET['Limit'];}

$sql = array("query"=>"SELECT ".implode(",", $fields)." FROM Eventapp.Event WHERE ".implode(" AND ",$wheres)." LIMIT :limit",
"binds"=>$values;
);

try {
if ($anarray = getArraySQL($sql,$dbs)) {
foreach ($anarray as $arow) {
echo json_encode(implode('-',$arow));
}
} else { echo "keine Daten"; }
}
catch(PDOException $e) {
echo "Error Query the Database ".$e->getMessage();
}




0
@RakonDark

habs nochmal gepostet , die Zeit war hier mal wieder zu gering um schreibfehler zu löschen

0
/* database */
$dbs = array("dbi"=>NULL,
"host"=>"localhost",
"user"=>"test",
"pass"=>"test",
"db"=>"EventApp"
);

// Connect to Datenbank
$dbs['connect'] = 'mysql:host='.$dbs['host'].';dbname='.$dbs['db'].';charset=utf8';
$dbs['dbi'] = new PDO($dbs['connect'], $dbs['user'] , $dbs['pass']);
$dbs['dbi']->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbs['dbi']->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

// get multiple entry from db
function getArraySQL($sqla,&$dbs) {
$someEntry = false;
if (isset($sqla["binds"])) {
$stmt = $dbs['dbi']->prepare($sqla["query"]);
$stmt->execute($sqla["binds"]);
} else {
$stmt = $dbs['dbi']->prepare($sqla);
$stmt->execute();
}
if ($stmt->columnCount() > 0 ) {
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
$someEntry = $rows ;
}
return $someEntry;
}

// Dein Programm
$gets = array('Ort'=>'Adresse2','Typ'=>'Typ','Name'=>'Name');

$fields = array();
$wheres = array();
$values = array();

foreach ($gets as $get=>$field) {
if (isset ( $_GET[$get] )) {
$fields[] = $field;
$wheres[] = $field." = :$get ";
$values[":".$get]= $_GET[$get];
}
}
$limit ="";
if (isset($_GET['Limit'])) {$values[':limit']=>$_GET['Limit']; $limit = ' Limit :limit';}

$sql = array("query"=>"SELECT ".implode(",", $fields)." FROM Event WHERE ".implode(" AND ",$wheres)." $limit",
"binds"=>$values;
);

try {
if ($anarray = getArraySQL($sql,$dbs)) {
foreach ($anarray as $arow) {
echo json_encode(implode('-',$arow));
}
} else { echo "keine Daten"; }
}
catch(PDOException $e) {
echo "Error Query the Database ".$e->getMessage();
}
0

Kann man sehr gut lesen... Wirklich. Jeder wird diesen Code in einer Sekunde verstehen...

Versuch mal eine Bild zu posten, dann kann man dir vl auch helfen...

NEIN, keine bilder, das ist nioch schlimmer und mans kann nicht kopieren!!!

bitte wenn, dann auf www.paste2.org o.ä. posten

0

Ja, ok, aber es ist alles besser als so...

0

Was möchtest Du wissen?