簡體   English   中英

在php腳本中查詢數據庫時出錯

[英]Error querying database in php script

我試圖從表單中插入一些數據,並且每次“錯誤查詢數據庫”時都給出錯誤,我的編碼是這樣

<?php
 $dbc = mysqli_connect('localhost', 'root', '', 'askquestion')
    or die('Error connecting to MySQL server.');   

   $first_name=$_POST['firstname'];
   $last_name=$_POST['lastname'];
   $email=$_POST['email'];
   $password=$_POST['password'];
   $state=$_POST['state'];
   $city=$_POST['city'];
   $category=$_POST['category'];


    $query = "INSERT INTO signup (first_name, last_name, email, password, state, city, category)  VALUES ('$first_name', '$last_name', $email, $password, $state, $city, $category)";

    $result=mysqli_query($dbc, $query) or die('Error querying database.'). mysql_error();;


    echo 'you are registered...!';

   mysqli_close($dbc);


   ?> 

您容易受到SQL注入攻擊的攻擊 始終使用mysql_real_escape_string()來轉義傳入的POST值。 這有助於防止SQL注入,並確保查詢語句中使用的所有具有特殊字符的值都正確轉義(例如,引號)。

此外,請確保所有字符串值都正確包裹在VALUES語句中的引號中。

看看你的查詢,你有

'$last_name', $email, $password, $state, $city, $category)

而您應該具有:

$query = "INSERT INTO signup (first_name, last_name, email, password, state, city, category)  VALUES ('$first_name', '$last_name', '$email', '$password', '$state', '$city', '$category')";

另外,嘗試使用

die(mysql_error());

開發中

為了確保SQL安全,您應始終轉義每個輸入值:

$first_name=mysql_real_escape_string($_POST['firstname']);

將值插入數據庫時​​,您需要在變量或字符串值附近加引號,而在整數/浮點數或數字周圍則不需要引號。

我想,您將從POST超級全局獲取的所有值都是文本字符串。 因此,請替換為:(如果這不起作用,請檢查您的表結構):

$query = "INSERT INTO signup (first_name, last_name, email, password, state, city, category)  VALUES ('$first_name', '$last_name', $email, $password, $state, $city, $category)";

有了這個:

$query = "INSERT INTO signup (first_name, last_name, email, password, state, city, category) VALUES ('$first_name', '$last_name', '$email', '$password', '$state', '$city', '$category')";

有關更多信息,請閱讀此處: http : //www.w3schools.com/sql/sql_insert.asp

暫無
暫無

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

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