簡體   English   中英

無效的查詢:您的SQL語法有誤

[英]Invalid query: You have an error in your SQL syntax

<?php
mysql_connect("mysql6.000webhost.com","a6124751_murali1","***");
$db= mysql_select_db("a6124751_signup");
$topic=$_GET["Topic"];
$question=$_GET["Question"];
$company =$_GET["Company"];
$query = "INSERT INTO questions (topic, question, company) VALUES ($topic, $question, $company)";
$sql1=mysql_query($query);
if (!$sql1) {
 die('Invalid query: ' . mysql_error());
}
?>

這是我在服務器中的php代碼,其中有一個名為“ questions”的表,我正嘗試使用前端表單從GET方法獲得的輸入中將數據插入其中,我可以弄清楚數據是否正確地來自我已經使用echo檢查的客戶端。 我收到一個錯誤

您的SQL語法有誤; 檢查與您的MySQL服務器版本相對應的手冊,以在第1行的“名稱,在此處輸入您的問題,公司)附近使用正確的語法

不知道查詢中有什么錯誤。 任何人都盡快發現它。 謝謝

您需要引用您的價值觀

('$topic', '$question', '$company')

因為這些是字符串。

另外,出於某些原因,您應該轉義數據。 不要讓MySQL抱怨某些字符,例如連字符等,並防止SQL注入。

使用准備好的語句:

參考文獻:


編輯:

例如,使用您當前的MySQL API:

$topic    = mysql_real_escape_string($_GET['topic']);
$question = mysql_real_escape_string($_GET['question']);
$company  = mysql_real_escape_string($_GET['company']);

我不知道您的輸入被稱為什么,所以這只是一個例子。

您提到使用$_GET進行調試,但使用POST方法。

  • 將所有$_GET更改$_GET上面的$_POST

嘗試這個

<?php
$db = mysqli_connect('mysql6.000webhost.com', 'a6124751_murali1', 'default@123', 'a6124751_signup');

if (!$db) {
    die('Connect Error (' . mysqli_connect_errno() . ') '
            . mysqli_connect_error());
}

$topic = $_GET["Topic"];
$question = $_GET["Question"];
$company = $_GET["Company"];

$query = "INSERT INTO questions (topic, question, company) VALUES ('$topic', '$question', '$company')";
$sql1=mysqli_query($db, $query);
if(!$sql1)
{
    die('Invalid query: ' . mysqli_error($db));
}
?>

修正您的代碼

  • mysql擴展名已棄用,以后將被刪除:改用mysqli或PDO

  • 您需要引用您的值('$topic', '$question', '$company')

如果是char類型,則必須將值放在單個qoutes中:

$query = "INSERT INTO questions (topic, question, company) VALUES ('$topic', '$question', '$company')";

但是,您不應再使用已棄用的mysql_* API。 mysqli_*或PDO與已准備好的語句一起使用。

暫無
暫無

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

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