[php] String zu int umwandeln

D

DrLiightninG

Neues Mitglied
1
Hallo zusammen,
ich habe ein php Script geschrieben, welches aus meiner MySQL Datenbank einen Datensatz per JSON auslesen soll.
Bei JSON Lint erhalte ich jedoch eine leere Ausgabe. Ich vermute, dass dies an meiner Variable liegt. Diese wird von der android App nämlich als String geliefert und muss im php Script zu einem Integer umgewandelt werden, da die Variable der MySQL Datenbank ebenfalls ein Integer ist.

Hier mein php Script:
PHP:
<?php

$db_name = "..";
$mysql_user = "..";
$mysql_pass = "..";
$server_name = "..";
//$id_string = $_POST["party_id"];
$id_string = "2"; //Ein String zu Testzwecken des php Scripts
$id = intval(id_string); //$id muss ein Integer sein (id_string zum Integer umgewandelt)

$con = mysqli_connect($server_name, $mysql_user, $mysql_pass, $db_name);

if (!$con) {
    die("connection error: " . mysqli_connect_error());
}

$sql_query = "SELECT * FROM partydaten WHERE id='id'"; //Hier die MySQL Query. Die Spalte id aus der Datenbank beinhaltet Integer Werte.

$result = mysqli_query($con,$sql_query);

$response = array();

while($row = mysqli_fetch_array($result))
{
    array_push($response,array("id"=>$row[0],"party_name"=>$row[1],"club_name"=>$row[2],"veranstalter"=>$row[3],"datum"=>$row[4],"zeit"=>$row[5],"age"=>$row[6],"adresse"=>$row[7],"stadt"=>$row[8],"plz"=>$row[9],"ticketverkauf"=>$row[10],"zusagen"=>$row[11]));
}

print mysqli_error();

print json_encode(array("server_response"=>$response));

mysql_close($con);

?>

Ich hoffe ihr könnt mir bei diesem Problem helfen.

Gruß
Jan
 
Du hast beim Versuch deine Variable an die Funktion intval zu übergeben das "$" bei deiner Variable vergessen.
Es müsste so aussehen:
Code:
$id = intval($id_string);

Kleiner Hinweis noch:
Wenn du Daten von außer an dein Script übergibst (z.b. per POST oder GET) solltest du grundsätzlich niemals die Daten einfach weiter verarbeiten.
Gerade beim arbeiten mit Datenbanken in Scripten, können sonst ganz schnell außenstehende Zugriff auf Daten in der Datenbank bekommen, an die eigentlich niemand sollte oder wahrlos iwelche SQL Befehle ausführen und somit großen schaden anrichten.
Das nennt man dann SQL-Injection. Mit dem intval() hast du das Problem schonmal umgangen. Solltest du aber vorhaben auch Strings zu nutzen, solltest du auf jeden Fall vorher die Funktion"mysqli_real_escape_string()" benutzen. Die Funktion Maskiert MySql Befehle, so das keine im String enthaltenen Befehle mehr ausgeführt werden können.
Schau dir am besten was zum Thema Sicherheit an (falls du das nicht schon getan hast) :
Sichere PHP-Web-Applikationen schreiben - Ein Überblick
Es sind vielleicht nicht alle Punkte relevant für dich aber es schadet sicher nicht sich einen Überblick über das Thema zu verschaffen.

EDIT:
Im Link benutzen die Autoren noch "mysql_real_escape_string" statt "mysqli_real_escape_string". Du solltets aber auf jeden Fall "mysqli_real_escape_string" nutzen, da ersteres mittlerweile veraltet und nicht mehr sicher ist.
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: enrem und DrLiightninG
Feuerstern schrieb:
Du hast beim Versuch deine Variable an die Funktion intval zu übergeben das "$" bei deiner Variable vergessen.
Es müsste so aussehen:
Code:
$id = intval($id_string);

Kleiner Hinweis noch:
Wenn du Daten von außer an dein Script übergibst (z.b. per POST oder GET) solltest du grundsätzlich niemals die Daten einfach weiter verarbeiten.
Gerade beim arbeiten mit Datenbanken in Scripten, können sonst ganz schnell außenstehende Zugriff auf Daten in der Datenbank bekommen, an die eigentlich niemand sollte oder wahrlos iwelche SQL Befehle ausführen und somit großen schaden anrichten.
Das nennt man dann SQL-Injection. Mit dem intval() hast du das Problem schonmal umgangen. Solltest du aber vorhaben auch Strings zu nutzen, solltest du auf jeden Fall vorher die Funktion"mysqli_real_escape_string()" benutzen. Die Funktion Maskiert MySql Befehle, so das keine im String enthaltenen Befehle mehr ausgeführt werden können.
Schau dir am besten was zum Thema Sicherheit an (falls du das nicht schon getan hast) :
Sichere PHP-Web-Applikationen schreiben - Ein Überblick
Es sind vielleicht nicht alle Punkte relevant für dich aber es schadet sicher nicht sich einen Überblick über das Thema zu verschaffen.

EDIT:
Im Link benutzen die Autoren noch "mysql_real_escape_string" statt "mysqli_real_escape_string". Du solltets aber auf jeden Fall "mysqli_real_escape_string" nutzen, da ersteres mittlerweile veraltet und nicht mehr sicher ist.

Danke klappt :)
Und das mit der Sicherheit werde ich mir auf jeden Fall mal ansehen. Danke!
 

Ähnliche Themen

J
  • JennyLessner
Antworten
1
Aufrufe
697
jogimuc
J
S
Antworten
7
Aufrufe
1.152
swa00
swa00
stele
Antworten
4
Aufrufe
1.156
stele
stele
Zurück
Oben Unten