簡體   English   中英

插入 MySQL 表 PHP

[英]Insert into MySQL Table PHP

我在制作一個簡單的表單以將數據插入 MySQL 表時遇到了一些麻煩。 我不斷收到此 SQL 錯誤:

“錯誤:您的 SQL 語法有錯誤;請檢查與您的 MySQL 服務器版本相對應的手冊,了解在 'stock ('ItemNumber', 'Stock') VALUES ('#4','3') 附近使用的正確語法')' 在第 1 行"

我的表單HTML是:

    <form action="database.php" method="post">
    Item Number: <input type="text" name="ItemNumber">
    Stock: <input type="text" name="Stock">
    <input type="submit">
    </form>

PHP是:

    <?php
    $con=mysqli_connect("localhost","root","root","inventory");
    if (mysqli_connect_errno($con))
      {
      echo "Failed to connect to MySQL: " . mysqli_connect_error();
      }
     $sql = "INSERT INTO current stock ('ItemNumber', 'Stock')
    VALUES
    ('$_POST[ItemNumber]','$_POST[Stock]'')";
    if (!mysqli_query($con,$sql))
      {
      die('Error: ' . mysqli_error($con));
      }
    echo "1 record added";
    mysqli_close($con);
    ?>

嘗試這個

你不應該在 POST 周圍使用參數的引號。 你應該在 POST 中使用它們

       $sql = "INSERT INTO `current stock` (ItemNumber, Stock)
           VALUES
         ('".$_POST['ItemNumber']."', '".$_POST['Stock']."' )";

在像這樣將變量插入 mysql 之前,您應該對其進行轉義

  • 請注意,該示例沒有調用mysqli_real_escape_string 如果您直接在查詢中嵌入字符串,則只需要使用mysqli_real_escape_string ,但我建議您永遠不要這樣做。 盡可能始終使用參數。

你有一個額外的引號,你需要在你的表名周圍打勾,因為它包含一個空格。

INSERT INTO current stock ('ItemNumber', 'Stock')
VALUES
('$_POST[ItemNumber]','$_POST[Stock]'')";

應該:

INSERT INTO `current stock` (`ItemNumber`, `Stock`)
VALUES
('$_POST[ItemNumber]','$_POST[Stock]')";

僅供參考,您也對SQL 注入持開放態度

?php
  $conn=new mysqli("localhost","root","","inventory")
  or die("not connected".mysqli_connect_error());
  if(isset($_POST['submit']{
    $ItemNumber=$_POST['ItemNumber'];
    $Stock=$_POST['Stock'];
    $sql="insert into current stock(ItemNumber,Stock) values('$ItemNumber','$Stock')";
    $query=mysqli_query($conn,$sql);
    if($query){
      echo"1 row inserted";
    }else{
      echo mysqli_error($conn);
    }
  }
?>

請學習使用參數綁定。 您正在創建具有安全漏洞的代碼。

以下是如何在 mysqli 中執行您的代碼:

$sql = "INSERT INTO current stock (ItemNumber, Stock) VALUES (?, ?)";

if (!($stmt = mysqli_prepare($con, $sql))) {
    die('Error: ' . mysqli_error($con));
}

if (!mysqli_stmt_bind_param($stmt, "ii", $_POST[ItemNumber], $_POST[Stock])) {
    die('Error: ' . mysqli_stmt_error($stmt));
}

if (!mysqli_stmt_execute($stmt)) {
    die('Error: ' . mysqli_stmt_error($stmt));
}

使用綁定參數比與引號內的引號混淆更容易。

<form action="database.php" method="post">
   Item Number: <input type="text" name="ItemNumber">
   Stock: <input type="text" name="Stock">
   <input type="submit" name="submit">
</form>`

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM