Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Formularz PHP nie wstawia się do bazy danych mySQL

Inni już udzielili ci odpowiedzi. Aby dodać, używasz cudzysłowów wokół nazw kolumn, które powinny być znakami wstecznymi lub całkowicie usunąć cudzysłowy.

Zmień:

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

do

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

lub

INSERT INTO orders (name, tacoOrder)

lub jako pełną odpowiedź:

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

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

Uwaga dodatkowa:Znaki nie są wymagane, ale nie można używać pojedynczych cudzysłowów w nazwach kolumn. To tylko siła przyzwyczajenia, że ​​sam używam backticków wokół nazw kolumn.

Plus, to $mysql_close(); nie powinien mieć $ przed mysql_close ale $link wewnątrz nawiasów:

Zmień na mysql_close($link);

Jednak, jak zauważył pan Alien, zmienna dla mysql_close() jest opcjonalne (Dzięki za to)

Masz również brakujący ) w if(!mysql_query($query) które powinno brzmieć jako if(!mysql_query($query))

Rozważ przejście na mysqli_* funkcje z przygotowanymi oświadczeniami lub PDO. mysql_* funkcje są przestarzałe i zostaną usunięte z przyszłych wydań.

kompletne przepisanie:(testowane i pracuję na moim serwerze)

<?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();

?>

Możesz również użyć tej metody, która jest nieco inna:

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

Przypisy:

Ryzykujesz otrzymaniem pustych wpisów danych, ponieważ nie sprawdzasz, czy elementy formularza są puste.

Możesz użyć instrukcji warunkowej w celu:

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

Ponadto użyj tego, o czym Awlad wspomina w jego odpowiedzi w odniesieniu do używania mysql_real_escape_string()

Możesz również przeczytać dobry artykuł na temat SO Jak mogę zapobiec wstrzykiwaniu SQL w PHP?

Oto (podstawowy) mysqli_* oparta na metodzie mysqli_real_escape_string() funkcję i instrukcję warunkową, aby sprawdzić, czy któreś z pól jest puste.

Jeśli jedno z pól pozostanie puste, zapytanie nie zostanie wykonane.

<?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. mysql:Jaka jest właściwa składnia słowa NIE PODOBA?

  2. Jak za pomocą Pentaho Kettle załadować wiele tabel z jednego stołu, zachowując jednocześnie integralność referencyjną?

  3. Jak automatycznie zaktualizować MySQL po wygaśnięciu pola znacznika czasu?

  4. jak możemy zmienić wartość za pomocą przycisków radiowych?

  5. Jak przetestować połączenie z bazą danych MySQL za pomocą skryptu?