Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Formulir PHP tidak dimasukkan ke dalam database mySQL

Orang lain telah memberi Anda jawaban. Untuk menambahkan, Anda menggunakan tanda kutip di sekitar nama kolom yang harus berupa tanda kutip balik atau hapus tanda kutip sama sekali.

Ubah:

INSERT INTO orders ('name', 'tacoOrder')
                    ^    ^  ^         ^

untuk

INSERT INTO orders (`name`, `tacoOrder`)

atau

INSERT INTO orders (name, tacoOrder)

atau sebagai jawaban lengkapnya:

$name = $_POST['name'];
$tacoOrder = $_POST['tacoOrder'];

$query = "INSERT INTO orders (`name`, `tacoOrder`) VALUES ('$name', '$tacoOrder')";

Sidenote:Backticks tidak diperlukan tetapi tanda kutip tunggal untuk nama kolom tidak dapat digunakan. Itu hanya kekuatan kebiasaan bahwa saya sendiri menggunakan backticks di sekitar nama kolom.

Plus, $mysql_close(); . ini tidak boleh memiliki $ di depan mysql_close tapi $link di dalam kurung:

Ubah ke mysql_close($link);

Namun seperti yang dicatat oleh Tuan Alien, variabel untuk mysql_close() adalah opsional (Terima kasih untuk itu)

Anda juga memiliki ) . yang hilang di if(!mysql_query($query) yang seharusnya dibaca sebagai if(!mysql_query($query))

Pertimbangkan untuk beralih ke mysqli_* fungsi dengan pernyataan yang disiapkan atau PDO. mysql_* fungsi tidak digunakan lagi dan akan dihapus dari rilis mendatang.

penulisan ulang lengkap:(diuji dan bekerja di server saya)

<?php

define('DB_NAME', 'tacoPractice');
define('DB_USER', 'root');
define('DB_PASS', 'root');
define('DB_HOST', 'localhost');

$link = mysql_connect(DB_HOST, DB_USER, DB_PASS);

if(!$link)
{
    die('Could not connect to database: ' . mysql_error());
}

$db_select = mysql_select_db(DB_NAME);

if(!$db_select)
{
    die('Can\'t use ' . DB_NAME . ': ' . mysql_error());
}

echo "HOLY EFF";
$name = $_POST['name'];
$tacoOrder = $_POST['tacoOrder'];

$query = "INSERT INTO orders (name, tacoOrder) VALUES ('$name', '$tacoOrder')";
if(!mysql_query($query))
{
    die("DAMMIT");
}
else{ echo "Success"; }

mysql_close();

?>

Anda juga bisa menggunakan metode ini yang sedikit berbeda:

$query = mysql_query("INSERT INTO orders (name, tacoOrder) VALUES ('$name', '$tacoOrder')");
if (!$query) {
    die('Invalid query: ' . mysql_error());
}
else{ echo "Success"; }

Catatan Kaki:

Anda berisiko mendapatkan entri data kosong karena Anda tidak memeriksa apakah elemen formulir Anda dibiarkan kosong.

Anda dapat menggunakan pernyataan kondisional sebagai efek dari:

if(!empty($_POST['name']) || !empty($_POST['tacoOrder']))
{
// continue with code processing
}

Plus, gunakan apa yang Awlad sebutkan di his answer sehubungan dengan menggunakan mysql_real_escape_string()

Anda juga dapat membaca artikel bagus di sini di SO How can I prevent SQL injection in PHP?

Berikut adalah (dasar) mysqli_* metode berbasis dengan mysqli_real_escape_string() fungsi dan pernyataan bersyarat untuk memeriksa apakah ada bidang yang kosong.

Jika salah satu bidang dibiarkan kosong, kueri tidak akan dijalankan.

<?php
define('DB_NAME', 'tacoPractice');
define('DB_USER', 'root');
define('DB_PASS', 'root');
define('DB_HOST', 'localhost');

$link = mysqli_connect(DB_HOST, DB_USER, DB_PASS);

if(!$link)
{
    die('Could not connect to database: ' . mysqli_error());
}

$db_select = mysqli_select_db($link,DB_NAME);

if(!$db_select)
{
    die('Can\'t use ' . DB_NAME . ': ' . mysqli_error());
}

echo "HOLY EFF";
$name = mysqli_real_escape_string($link,$_POST['name']);
$tacoOrder = mysqli_real_escape_string($link,$_POST['tacoOrder']);


if(!empty($_POST['name']) || !empty($_POST['tacoOrder'])){
$query = "INSERT INTO orders (name, tacoOrder) VALUES ('$name', '$tacoOrder')";
if(!mysqli_query($link,$query))
{
    die("DAMMIT");
}
else{ echo "Success"; }

mysqli_close($link);

}

?>


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah MySQL Regexp mendukung pencocokan Unicode?

  2. Perbarui kolom jika nilai input bukan nol jika tidak, abaikan dan pertahankan nilai kolom yang ada di database

  3. Bagaimana meningkatkan kinerja INSERT pada tabel MySQL yang sangat besar

  4. Memilih kolom secara dinamis di MySQL

  5. gagal mengeksekusi pernyataan dengan php dan mysql