sql >> Databáze >  >> RDS >> Mysql

Data z PHP formuláře se neodesílají do mySQL

Zde je úplný příklad vašeho kódu pomocí 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'],
));

Vysvětlení:

Prepared statements se používá k vyčištění vašeho vstupu, aby se zabránilo SQL injection.V SQL můžete svou hodnotu použít bez jednoduchých nebo dvojitých uvozovek prohlášení k závaznosti.

V Execute můžete předat pole pro váš SQL statement se stejným indexovým názvem.

Jaký je důvod používat PDO nebo mysqli_* místo mysql_: Protože rozšíření mysql_ je zastaralé a není dostupné v PHP 7.

Postranní poznámka:

Vím, že @Rahautos již poskytl řešení pro použití MYSQL standardní Date Format ('Y-m-d') jak jsem použil ve svém execution .



  1. 4 tabulkové výstupní režimy v SQLite

  2. Aktualizujte data databáze pomocí tlačítka Odeslat

  3. MySQL SELECT DISTINCT by měla rozlišovat malá a velká písmena?

  4. Vlastní SERIAL / automatický přírůstek na skupinu hodnot