[英]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.