Hallo ich finde den Fehler nicht.
Ich versuche von einem Smartphone Daten aus einer Mysql Datenbank auszulesen. Dazu hatte ich 2 Datensätze über phpmyadmin befüllt. Diese Datensätze werden bei der select Anfrage auch zurück geliefert. Mittlerweile kann ich Datensätze über das Smartphone in der Datenbank eintragen. Diese durch das Smartphone eingetragenen Datensätze sorgen allerdings dafür das ich keine Daten mehr zurück geliiefert bekomme. Ich finde nicht den Fehler noch den Unterschied die Datensätze sind von ihrer Struktur identeisch.
Das Problem ist also manuell eingetragene Datensätze werden korrekt zurück geliefert, sogar im Smartphone angezeigt. Durch das Smartphone eingetragene Datensätze in der Datenbank sorgen für ein Null-Ergebnis bei der Abfrrage.
PHP-Code:
mysql> show fields from pintext;
+-----------------------+-------------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+-------------+------+-----+-------------------+----------------+
| idpintext | int(11) | NO | PRI | NULL | auto_increment |
| ueberschrift | varchar(50) | YES | | NULL | |
| text | longtext | NO | | NULL | |
| erstellt | timestamp | YES | | CURRENT_TIMESTAMP | |
| email | varchar(60) | YES | | NULL | |
| telefon | varchar(45) | YES | | NULL | |
| user_iduser | int(11) | NO | MUL | NULL | |
| kategorie_idkategorie | int(11) | NO | MUL | NULL | |
| ort_idort | int(11) | NO | MUL | NULL | |
PHP-Code:
mysql> show fields from user;
+-----------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+--------------+------+-----+---------+----------------+
| iduser | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(100) | NO | | NULL | |
| gmail | varchar(60) | YES | | NULL | |
| points_idpoints | int(11) | NO | MUL | NULL | |
+-----------------+--------------+------+-----+---------+----------------+
PHP-Code:
[mysql> show fields from points;
+----------+-----------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-----------+------+-----+-------------------+----------------+
| idpoints | int(11) | NO | PRI | NULL | auto_increment |
| punkte | int(6) | YES | | 50 | |
| date | timestamp | YES | | CURRENT_TIMESTAMP | |
+----------+-----------+------+-----+-------------------+----------------+
3 rows in set (0.00 sec)
Folgendes Php Script nimmt die Postvariablen in Empfang und stellt die Datenbank abfrage:
PHP-Code:
$kategorie = $_POST ['kategorie'];
$ort = $_POST ['ort'];
$sprintfQuery = "select pintext.ueberschrift, pintext.text, pintext.erstellt, user.name, user.gmail, points.punkte
from pintext, user, points where pintext.ort_idort=(
select ort.idort from ort where name='%s')
and user.iduser=pintext.user_iduser and pintext.kategorie_idkategorie = (select idkategorie from
kategorie where name='%s') and user.points_idpoints =points.idpoints;";
$query = sprintf ( $sprintfQuery, $ort, $kategorie );
$result = mysqli_query ( $db, $query );
$response = array ();
if ($result->num_rows < 1) {
$response = array (
'fehler' => mysqli_error ( $db )
);
} else {
while ( $row = mysqli_fetch_array ( $result ) ) {
array_push ( $response, array (
'ueberschrift' => $row [0],
'text' => $row [1],
'date' => $row [2],
'userName' => $row [3],
'userMail' => $row [4],
'userPunkte' => $row [5]
) );
}
}
mysqli_close ( $db );
echo json_encode ( array (
'json_response' => $response
) );
Befülle ich die beiden Post variablen "kategorie" und "ort" manuell und stelle die Abrage ohne sprintf Funktion in PHPMYADMIN bekomme ich ein korrektes Ergebnis zurück geliefert.
PHP-Code:
select pintext.ueberschrift, pintext.text, pintext.erstellt, user.name, user.gmail, points.punkte from pintext, user, points where pintext.ort_idort=( select ort.idort from ort where name='Brackel') and user.iduser=pintext.user_iduser and pintext.kategorie_idkategorie = (select idkategorie from kategorie where name='Zu Verkaufen') and user.points_idpoints =points.idpoints
liefert über die Konsole folgendes Ergebnis völlig korrekt zurück, das dritte Ergebnis (Daten über das Smartphone eingegeben) hat den kleinsten Text bitte nicht übersehen.:
PHP-Code:
+--------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------+--------------------+--------------------+--------+
| ueberschrift | text | erstellt | name | gmail | punkte |
+--------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------+--------------------+--------------------+--------+
| ueberschrift | Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod
aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum.
Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. | 2017-01-02 11:52:16 | cabanni | rabebi@gmail.com | 500 |
| ueberschrift | Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod
tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum.
Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. | 2017-01-02 11:52:34 | cabanni | rabebi@gmail.com | 500 |
| �berschrift | Test test eeste edesdsasddl�kjal�kasfdjippiqwerjkBeschreibung | 2017-01-13 04:39:36 | Cabanni SuperSkunk | rabebibi@gmail.com | 50 |
+--------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------+--------------------+--------------------+--------+
3 rows in set (0.00 sec)
Wenn ich über das Smartphone nun aber die Anfrage an das Php file sende liefert mir mysql kein Ergebnis zurück in dem Fall hänge ich dann hier zwar wird kein mysql Fehler angezeigt aber die Rückgabe in der debugging ausgabe ist das leere $response Array 01-13 10:45:59.236 10093-10093/xyz.lokalpatriot.cabanni.lokalpatriot_brackel D/Json*String: {"json_response":{"fehler":""}}:
PHP-Code:
if ($result->num_rows < 1) {
$response = array (
'fehler' => mysqli_error ( $db )
);
Wenn ich den vom Smartphone eingetragnen Datensatz in der Mysql-Datenbank lösche, bekomme ich auch wieder eine ganz normale korrekte Ausgabe.. Aber wieso????
Ich steige nicht dahinter..
Jetzt wo ich den thread erstellt habe fällt mir die Farbe bei dem Smartphone-Datensatz auf, offenbar ein UTF-8 Fehler?