查询无效:您的SQL语法中存在错误

时间:2015-07-22 05:11:46

标签: php mysql

<?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代码,其中有一个名为&#39; questions&#39;我试图从前端使用表格从GET方法获得的输入中插入数据,我可以发现数据来自我使用echo检查过的客户端。我收到错误

  

您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以获得正确的语法,使用附近的名称,在此输入您的问题,公司)&#39;在第1行

不知道查询中的错误是什么。任何人都尽快找到它。谢谢

3 个答案:

答案 0 :(得分:5)

您需要引用您的值

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

因为那些是字符串。

另外,出于某些原因,您应该转义数据。不要让MySQL抱怨某些字符,如连字符等,并防止SQL注入。

使用准备好的陈述:

参考(S):

修改

使用您现有的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更改为$_POST

答案 1 :(得分:1)

试试这个

<?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')

答案 2 :(得分:0)

如果是char类型,则必须将值放在单个qoutes中:

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

但您不应再使用已弃用的mysql_* API。使用mysqli_*或PDO准备好陈述。