[?]PHP in MySQL schreiben

02/13/2013 18:54 coladose#16
Code:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''key', 'name', 'date') VALUES ('testKey', 'testName', '22-11-12')' at line 1
Dieser...
02/13/2013 19:27 IchVerabschiedeMich#17
Quote:
Originally Posted by Hupfi10 View Post
Diese Datei includen:
PHP Code:
<?php
$dbhost 
"localhost"// this will ususally be 'localhost', but can sometimes differ
$dbname "DATENBANKNAMEHIER"// the name of the database that you are going to use for this project
$dbuser "DATENBANKUSERHIER"// the username that you created, or were given, to access your database
$dbpass "PASSWORT HIER"// the password that you created, or were given, to access your database
mysql_connect($dbhost$dbuser$dbpass) or die("MYSQL ERROR" mysql_error());
mysql_select_db($dbname) or die("MYSQL ERROR" mysql_error());
?>
Das hier ist das eigentliche Script:
PHP Code:
<?php
include "NAMEDESOBIGENSCRIPTS.PHP";

$writequery mysql_query("INSERT INTO TABELNAME ('key', 'name', 'date') VALUES ('".$VAR1."', '".$VAR2."', '".$VAR3."')");

if (!empty(
$writequery))
{
 echo 
"INSERT OK";
}
else
{
 echo 
"INSERT NOK";
}
?>
Und die Spalte ID würde ich auf AI stellen, da das wesentlich einfacher zu handeln ist, du brauchst sowieso entweder einen Unique Wert oder einen Schlüssel, welchen ich dann einfach auf die ID Legen würde.
Wozu die MySQL Daten in einzelne Variablen?
warum prüfst du mit empty wenn der Rückgabe wert von mysql_query(); bei einem fail = false ergibt?

Noch dazu sind die Variablen nicht escaped.
02/13/2013 19:40 coladose#18
Um die Sicherheit zu erhöhen werden jetzt die String escaped und um den Error zu bekommen ein "die" mit "mysql_error()" gesetzt.

PHP Code:
<?php
include "config.php";

$VAR1 mysql_real_escape_string($_GET['k']);
$VAR2 mysql_real_escape_string($_GET['n']);
$VAR3 mysql_real_escape_string($_GET['d']);

$writequery mysql_query("INSERT INTO table ('key', 'name', 'date') VALUES ('".$VAR1."', '".$VAR2."', '".$VAR3."')") or die ("<b><i>MYSQL ERROR:</i></b> ".mysql_error());
?>
Funktionieren tuts trotzdem nicht..
02/13/2013 20:37 beefm4ker#19
Quote:
Originally Posted by coladose View Post
Um die Sicherheit zu erhöhen werden jetzt die String escaped und um den Error zu bekommen ein "die" mit "mysql_error()" gesetzt.

Funktionieren tuts trotzdem nicht..

Probier mal so und sag welch Fehler kommt...
02/13/2013 22:14 iKyroja :>#20
Ich verstehe nicht warum ihr noch alle bei euren mysql_* Funktionen gleibt, diese
werden demnächst als Veraltet erklärt steigt doch endlich alle auf mysqli oder PDO um.
02/13/2013 23:14 .Marcel'#21
Quote:
Originally Posted by iKyroja :> View Post
Ich verstehe nicht warum ihr noch alle bei euren mysql_* Funktionen gleibt, diese
werden demnächst als Veraltet erklärt steigt doch endlich alle auf mysqli oder PDO um.
Es wird immer Leute geben, die an veraltender Technologie anhalten, auch wenn es in den meisten fällen nicht Empfehlenswert ist.
02/13/2013 23:40 IchVerabschiedeMich#22
Quote:
Originally Posted by iKyroja :> View Post
Ich verstehe nicht warum ihr noch alle bei euren mysql_* Funktionen gleibt, diese
werden demnächst als Veraltet erklärt steigt doch endlich alle auf mysqli oder PDO um.
Bin ebenfalls auf PDO umgestiegen vor paar Wochen und kann das nur jedem empfählen.

Beispiel:
PHP Code:
$db = new PDO('mysql:host=localhost;dbname=<SOMEDB>''<USERNAME>''PASSWORD'); // MySQL Connection
$stmt->prepare('INSERT INTO [table] (Key, Name, Date) VALUES (?,?,?)');
$stmt->execute(array($_GET['k'], $_GET['n'], $_GET['d'])); 
Hab das alles jetzt aus der Hand geschrieben vom iPad kann also Fehler enthalten.
02/14/2013 12:10 iKyroja :>#23
Quote:
Originally Posted by Padrio View Post
Bin ebenfalls auf PDO umgestiegen vor paar Wochen und kann das nur jedem empfählen.

Beispiel:
PHP Code:
$db = new PDO('mysql:host=localhost;dbname=<SOMEDB>''<USERNAME>''PASSWORD'); // MySQL Connection
$stmt->prepare('INSERT INTO [table] (Key, Name, Date) VALUES (?,?,?)');
$stmt->execute(array($_GET['k'], $_GET['n'], $_GET['d'])); 
Hab das alles jetzt aus der Hand geschrieben vom iPad kann also Fehler enthalten.
Wen dann schon so:

PHP Code:
<?php

try {
            
    
$db = new PDO('mysql:host='.$HOST$USER$PASS); // MySQL Connection
            
} catch(PDOException $e) {
            
    die(
'Es konnte keine Verbindung zur Datenbank hergestellt werden:<br />'.$e->getMessage()); // Fehlerausgabe
            
}

$stmt->prepare('INSERT INTO [db].[table] (Key, Name, Date) VALUES (?,?,?)');

$stmt->execute(array($_GET['k'], $_GET['n'], $_GET['d']));

?>
02/15/2013 10:04 Synatex#24
Ehrlich.. Wenn ihr Anfängern etwas empfehlt, dann nutzt es bitte auch richtig. Try-Catch ist KEINE!!! if-Anweisung. Es ist zur Fehlerbehandlung gedacht, beispielsweise ihr wollt danach nochmal die Daten auf Richtigkeit überprüfen und bei Unstimmigkeiten den User darauf hinweisen.

Deine Try-Catch Anweisung ist nicht gut wenn Anfänger in diesen Pool reingeworfen werden. Exceptions schmeißen automatisch eine Fehlermeldung und den Stack-Trace wenn sie nicht abgefangen werden siehe PDO beispielsweise bei falschem Host:

Quote:
SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Der angegebene Host ist unbekannt.
Deine Try-Catch überprüft nichts, behandelt nichts, sondern gibt nur einen Fehler aus der so oder so ausgegeben werden würde - daher völlig nutzlos.