Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Daten aus dem PHP-Formular werden nicht an mySQL gesendet

Hier ist das vollständige Beispiel Ihres Codes mit PDO :

$dbhost = "localhost";
$dbname = "llamabre_farms1";
$dbusername = "llamabre_visitor";
$dbpassword = "llama";

$link = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbusername,$dbpassword);

$statement = $link->prepare("
    INSERT INTO farmsdir 
    (name, owners, location, phone, email, website, description, dateadded, logo, state)
    VALUES(:fname, :sowners, :slocation, :sphone, :semail, 
    :swebsite, :sdescription, :dateadded, :logo, :state)
    ");

$statement->execute(array(
    "fname" => $_POST['name'],
    "sowners" => $_POST['owners'],
    "slocation" => $_POST['location'],
    "sphone" => $_POST['phone'],
    "semail" => $_POST['email'],
    "swebsite" => $_POST['website'],
    "sdescription" => $_POST['description'],
    "dateadded" => date('Y-m-d',strtotime($_POST['dateadded'])),
    "logo" => $_POST['logo'],
    "state" => $_POST['state'],
));

Erklärung:

Prepared statements wird verwendet, um Ihre Eingabe zu bereinigen, um SQL zu verhindern Injektion. Sie können Ihren Wert ohne einfache oder doppelte Anführungszeichen in SQL verwenden Anweisung zum Binden.

In Execute Funktion können Sie ein Array für Ihre SQL statement übergeben mit demselben Indexnamen.

Was ist der Grund, PDO oder mysqli_* anstelle von mysql_ zu verwenden: Weil die Erweiterung mysql_ veraltet und in PHP 7 nicht verfügbar ist.

Nebenbemerkung:

Ich weiß, dass @Rahautos bereits die Lösung für die Verwendung von MYSQL bereitgestellt hat Standard-Date Format ('Y-m-d') wie ich es in meiner execution verwendet habe .