(mysql_real_escape_string) richtig anwenden?

3 Antworten

Richtig ist die zweite Variante. Gewöhne dir allgemein an, bei solchen Fragen direkt in die offizielle Dokumentation zu schauen:

http://php.net/manual/de/mysqli.real-escape-string.php

Dort findest du auch immer gute Beispiele. Ich empfehle statt dem Escapen den moderneren Ansatz der Prepared Statements: 

http://php.net/manual/de/mysqli.quickstart.prepared-statements.php

https://websitebeaver.com/prepared-statements-in-php-mysqli-to-prevent-sql-injection

Gegen XSS kannst du dir auch mal die Content Security Policy anschauen.

Die zweite Variante ist richtig.

Woran kann das liegen (SQL) php geht nicht - php geht

ich würde gerne von PHP aus ein Query ausführen leider kommt immer die Meldung

"1064: 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 'Insert into categoryhasquestions (categoryidcategory, questionsQuestions) ' at line 1 "

wenn ich aber den SQL-Befehla ausgeben lasse und mit phpmyadmin ausführe, dann funktioniert es problemlos

Meiin SQL-Befehl wäre etwas zu lang zum Posten aber ich erkläre mal noch was er macht: ich mache ein Insert auf Tabelle A und dannach gleich mehrere Inserts auf Tabelle B (die mit A verknüpft ist) für die Verknüpfung verwende ich die Funktion Lastinsertid()

hätte jemand eine Idee, woran das liegen könnte ?

...zur Frage

Hallo, ich habe ein Problem mit meinem php Code. Ich möchte das eingegebene Passwort ändern durch eine form mit der post method..kann mir wer helfen?

HTML:

Änderungen speichern

PHP:

<?php //Connecting to sql db. $user='Nixda :D'; $pass='xd man...'; $pdo = new PDO('mysql:host=ioafhaikafiuwkh;dbname=privat, $user, $pass); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); }

$sql = "INSERT INTO users (passwort) VALUES ('$_POST[post_pw]') WHERE id = $userid";

if ($conn->query($sql) === TRUE) { echo "New record created successfully"; } else { echo "Error: " . $sql . "
" . $conn->error; }

$conn->close(); ?>

...zur Frage

INSERT INTO wird doppelt eingetragen warum (MySQL)?

Hallo zusammen,

leider finde ich den Fehler nicht hab ihr ne Idee warum mein Formular doppelt Eingetragen wird ? Hier der Code:

if(isset($_GET["sub-manuel"])){
	$addr = $_POST["address"];
	$currencyid = $_POST["currencyid"];
	$coins = str_replace(",", ".", $_POST["coins"]);
	$cost_currency = $_POST["cost_currency"];
	$cost_cash = str_replace(",", ".",$_POST["cost_cash"]);
	$cost_eur = $cost_cash;
if(!empty($addr)) {
    $address = $addr;
}
else {
    $address = "novalue";
}

$balance = number_format($coins, 12);
$symbol = findCryptoSymbol($currencyid);

$query ="INSERT INTO coins (user_id, currencyid, symbol, address, coins, cost_eur, status) VALUES (:user_id, :currencyid, :symbol, :address, :coins, :cost_eur, :status)";
$statement = $pdo-&gt;prepare($query);
$statement-&gt;execute(array('user_id' =&gt; $user["id"], 'currencyid' =&gt; $currencyid, 'symbol' =&gt; $symbol,'address' =&gt; $address, 'coins' =&gt; $balance, 'cost_eur' =&gt; $cost_eur, 'status' =&gt; true ));

if ($statement-&gt;execute()){
    $insertdatavalue = true;
}
else {
    $insertdatavalue = false;
}

}

Danke im voraus!

...zur Frage

mySQL: Wenn ID vorhanden, dann Update sonst INSERT ... ... WIE geht das?

Hallo Zusammen! Ich bin sehr frustriert und ratlos! Meine Lieblingsmeldung seit Tagen: "#1064 - 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 ..."

Ich habe so einen GPS-Tracker, da lese ich Daten aus bzw. der Tracker stellt diese Daten in einem CSV-File zur Verfügung! Jeder Datensatz hat eine eindeutige fortlaufende Nummer (Spalte: index). Nun habe ich ein PHP-Script geschrieben, was die Daten in eine mySQL-Tabelle einliest. NEUE GPS-Daten werden dem CSV-File mittels der fortlaufenden Nummer hinzugefügt. Manche GPS-Daten im CSV-File "springen aus der Reihe" und ich kann diese im CSV-File komfortabel löschen. In der Tabelle habe ich selbst noch die Spalte id als PrimaryKey AUTO_INCREMENT hinzugefügt und den index als Unique gekennzeichnet (PRIMARY KEY (id), UNIQUE KEY index (index)). Nun möchte ich nur die Daten einlesen, welche NEU im CSV-File hinzugekommen sind und die "alten" Daten updaten! Klingt einfach, aber ich verzweifle ... Ich habe mit EXISTS gespielt, IF THEN, ... =====1. Versuch===== INSERT INTO db.bt747 (id, index, rcr) VALUES (NULL,1,'TEST') ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id), index=1; =====2. Versuch===== BEGIN IF(SELECT COUNT() FROM db.bt747 WHERE db.bt747.index = 7)>0 THEN UPDATE db.bt747 SET rcr = 'FREDDY', date = '2014-07-08', time = '21:23:44', valid = 'TEST' WHERE db.bt747.index = 7; ELSE INSERT INTO db.bt747 (rcr,date, time,valid) VALUES ('SEPPEL','2033-12-24','22:23:24','HALLO'); END IF; END =====3. Versuch===== IF EXISTS(SELECT COUNT() FROM db.bt747 WHERE db.bt747.index = 7) THEN UPDATE db.bt747 SET rcr = 'FREDDY', date = '2014-07-08', time = '21:23:44', valid = 'TEST' WHERE db.bt747.index = 7; ELSE INSERT INTO db.bt747 (rcr,date, time,valid) VALUES ('SEPPEL','2033-12-24','22:23:24','HALLO'); END IF;

Wenn ich die einzelnen Selects (SELECT COUNT(*) ..., UPDATE ..., INSERT ...) ausführe, funktioniert es, aber im Zusammenspiel mit IF THEN, EXISTS, ON DUPLICATE KEY UPDATE kommt immer die Lieblingsmeldung ...

Wahrscheinlich eine Kleinigkeit, für jemanden der sich damit auskennt ...

VIELEN Dank für Eure Hilfe Gruss W.

...zur Frage

MySQL MD5 Verschlüsselung?

Guten Tag,

Ich wüsste gerne, wie ich bei dem Folgendem Java Quellcode das Passwort (password) zu MD5 Verschlüsseln kann.

Hier der Quellcode:

PreparedStatement preparedStatement = MySQL.connection.prepareStatement("INSERT INTO paddixx_web_users (uuid,username,password) VALUES (?,?,?)");
...zur Frage

Finde den Fehler nicht(PHP)?

Ich arbeite an einem Login. In einer Tabelle "users" in einer Datenbank gibt es die Spalten "username" und "password". In einem Formular gebe ich beide Dinge ein um mich einzuloggen. Diese Eingaben vergleiche ich dann mit einer Abfrage und das daraus resultierende Ergebnis. Nun habe ich schon einige Ausgaben mit eingebaut, die überprüfen sollen, an was mein Problem liegt. Das Problem liegt daran, dass in $row nichts gespeichert ist. var_dump() gibt hier "NULL". Wenn ich die SQL-Abfrage jedoch in phpmyadmin eingebe funktioniert sie. Woran könnte es noch liegen?

<?php
//Initialisierung der Session
session_start();

//Verbindung zur Datenbank
$pdo = new PDO(DIE VERBINDUNGSDATEN);

//Übernahme aus Formular
$name = $_POST["username"];
$password = $_POST["pwd"];

$shapwd = sha1($password);

//Suchkriterien angeben
$sql = "SELECT * from users WHERE username=$name AND password=$shapwd";

//LoginOK zeigt Status login an
$loginOk = false;

var_dump($name);
echo "<br>";
var_dump($shapwd);
echo "<br>";
echo "<br>";

//Durchsuchen der Datenbank
foreach($pdo->query($sql) AS $row){    
    echo $row['username']."<br>";
    echo $row['password']."<br>";
        /*
    if($row['username']==trim($name) && $row['password']==trim($shapwd)){
        $loginOk = true;
        break;
    }*/
}

var_dump($row['username']);
echo "<br>";
var_dump($row['password']);
echo "<br>";
echo "<br>";

if($loginOk === true){
    header('Location: ../mainpage.php');
}else{
    header('Location: ../falsch.html');
}
?>
...zur Frage

Was möchtest Du wissen?