[英]mySQL query syntax error?
我在wordpress網站上有聯系表格,該表格由ajax發送並發送到我的郵件中。 我還想將結果保存在數據庫中,所以我編寫了此查詢,但是它給了我和語法錯誤,但是在此代碼中我找不到任何錯誤:
<?php
$con = mysql_connect("localhost","username","password");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("u31272B3", $con);
$sql="INSERT INTO wp_contactform (Nimi, Puhelin, E-mail, Viesti, IP, Day)
VALUES
('$_POST[Nimi]','$_POST[Puhelin]','$_POST[Sposti]','$_POST[Tiedot]','$_POST[Gotcha]','$_POST[Day]')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "1 record added";
mysql_close($con);
?>
發送它的jquery腳本可以正常工作,並且郵件已發送,但這不能保存。
用反引號(`)引用列名稱“電子郵件”。 目前,MySQL分兩部分進行解釋。
還請注意,(根據我的評論)您的代碼對SQL注入攻擊非常開放。 最好使用適當參數化的SQL查詢。
SQL注入示例:
"INSERT INTO table (field) VALUE ('$_POST[var]')"
如果您發布值"'; DROP TABLE table; --"
那么您將擁有一個有效的SQL字符串,該字符串將插入一個空字符串,然后嘗試刪除該表。 替換您想要的任何有害聲明。
並且您還應該使用mysql_real_escape_string()或准備好的語句。 如果您的查詢數據有任何特殊字符,它可能會吹響您的查詢,這也可以幫助您進行sql注入。
http://php.net/mysql_real_escape_string http://php.net/pdo
您的SQL請求應編寫如下:
$sql = "INSERT INTO wp_contactform (`Nimi`, `Puhelin`, `E-mail`, `Viesti`, `IP`, `Day`)
VALUES
('$_POST[Nimi]','$_POST[Puhelin]','$_POST[Sposti]','$_POST[Tiedot]','$_POST[Gotcha]','$_POST[Day]')"
使用非字母數字字符的SQL字段必須使用反引號( `
)進行轉義。
這應該工作
<?php
$con = mysql_connect("localhost", "username", "password");
if(!$con){
die('Could not connect: '.mysql_error());
}
mysql_select_db("u31272B3", $con);
$sql = "INSERT INTO wp_contactform (`Nimi`, `Puhelin`, `E-mail`, `Viesti`, `IP`, `Day`)
VALUES
('".mysql_real_escape_string($_POST['Nimi'])."','".
mysql_real_escape_string($_POST['Puhelin'])."','".
mysql_real_escape_string($_POST['Sposti'])."','".
mysql_real_escape_string($_POST['Tiedot'])."','".
mysql_real_escape_string($_POST['Gotcha'])."','".
mysql_real_escape_string($_POST['Day'])."')";
if(!mysql_query($sql, $con)){
die('Error: '.mysql_error());
}
echo "1 record added";
mysql_close($con);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.