0

当我执行这个查询时,它返回 false,这意味着查询是错误的。你能弄清楚为什么吗?

$string1 = 'wee';
$string2 = 'wee'; 
$string3 = 'wee'; 
$string4 = 'wee';  

if (isset($_POST['submit'])) {  

    $query = "INSERT INTO data (book, title, content, author)
              VALUES ($string1, $string2, $string3, $string4)";          
    mysql_query($query, $con);    
}

但是,当我放置如下内容时,它会返回 true 并正确插入:

$query = "INSERT into data (book, title, content, author)
          VALUES ('wee', 'wee', 'wee', 'wee')";

还有一个问题:当我提交时,查询似乎在执行时返回了两次,这意味着一个查询有两条记录。有人明白吗?

如果您需要更多信息,请询问。

提前致谢。

4

2 回答 2

1

尽管这个问题似乎得到了回答,但您不应该直接在查询中使用用户输入,因为这会为 SQL 注入等漏洞打开漏洞(这很糟糕)

如果您查看 php.net ( mysql_query ) 上的 mysql 页面,该页面显示建议您使用像 PDO ( pdo-mysql )这样的抽象层

使用 PDO 将允许您将参数绑定到您的 sql 查询,以绕过在查询中使用用户输入的安全隐患。

如果您不将参数绑定到查询,那么您将度过一段糟糕的时光。

于 2012-09-30T20:34:06.753 回答
0

您的字段数据类型是字符串或 varchar,因此您需要在它们周围放置 '' 或 ""。

更改您的查询如下

$query = "INSERT into data (book, title, content, author)VALUES ('".$string1."', '".$string2."',     
         '".$string3."', '".$string4."')";

要解决提交问题,请发布您的 html 代码

于 2012-09-30T17:24:21.083 回答