Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Biểu mẫu PHP không chèn vào cơ sở dữ liệu mySQL

Những người khác đã cho bạn câu trả lời. Để thêm, bạn đang sử dụng các dấu ngoặc kép xung quanh các tên cột phải là dấu gạch ngược hoặc xóa hoàn toàn các dấu ngoặc kép.

Thay đổi:

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

đến

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

hoặc

INSERT INTO orders (name, tacoOrder)

hoặc như một câu trả lời đầy đủ:

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

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

Chú thích phụ:Không bắt buộc phải có dấu ngoặc kép nhưng không thể sử dụng các dấu ngoặc kép cho tên cột. Đó chỉ là một thói quen mà bản thân tôi sử dụng dấu gạch ngược xung quanh tên cột.

Thêm vào đó, $ mysql_close (); này không được có $ trước mysql_close nhưng $ link bên trong dấu ngoặc:

Thay đổi thành mysql_close ($ link);

Tuy nhiên, theo lưu ý của ông Alien, biến cho mysql_close () là tùy chọn (Cảm ơn vì điều đó)

Bạn cũng có một ) bị thiếu trong if (! mysql_query ($ query) sẽ đọc là if (! mysql_query ($ query))

Hãy cân nhắc chuyển sang mysqli_ * các chức năng với các câu lệnh chuẩn bị sẵn hoặc PDO. mysql_ * các chức năng không được dùng nữa và sẽ bị xóa khỏi các bản phát hành trong tương lai.

viết lại hoàn chỉnh:( đã kiểm tra và làm việc trên máy chủ của tôi)

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

?>

Bạn cũng có thể sử dụng phương pháp này hơi khác một chút:

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

Chú thích cuối trang:

Bạn có nguy cơ nhận được các mục nhập dữ liệu trống vì bạn không kiểm tra xem các phần tử biểu mẫu của mình có bị bỏ trống hay không.

Bạn có thể sử dụng một câu lệnh có điều kiện để có hiệu lực:

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

Ngoài ra, hãy sử dụng những gì Awlad đề cập trong câu trả lời của anh ấy liên quan đến việc sử dụng mysql_real_escape_string ()

Bạn cũng có thể đọc một bài viết hay tại đây về SO Làm cách nào để ngăn chặn SQL injection trong PHP?

Đây là mysqli_ * (cơ bản) phương thức dựa trên mysqli_real_escape_string () và một câu lệnh điều kiện để kiểm tra xem có trường nào trống không.

Nếu một trong các trường để trống, truy vấn sẽ không thực thi.

<?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. Tìm kiếm toàn văn bản trong MySQL với utf8 (tiếng Ba Tư / tiếng Ả Rập)

  2. Làm cách nào để nhận phần trăm tổng số khi truy vấn có GROUP BY?

  3. MIN () - Tìm giá trị nhỏ nhất trong một cột trong MySQL

  4. Tạo nguồn cấp dữ liệu từ nhiều mô hình đường ray, một cách hiệu quả?

  5. Thực thi truy vấn MySQL SELECT * song song