撇号和引号不能从表单中添加到mysql中


Apostrophy and quotation marks won't add to mysql from a form

我需要帮助!

我有一个网站管理页面上的表单,业主填写他的项目和得到添加到mysql数据库,但有时数据包含单引号或双引号,所以它不会添加到数据库。

我试过使用地址斜杠,但它仍然不起作用。

这是我试过的代码

$atitle = addslashes($_REQUEST['atitle']); 
$acontent = addslashes($_REQUEST['acontent']); 
$query = "INSERT INTO projects VALUES (NULL, '$atitle', '$acontent', '$remote_file',     '$remote_file1', '$remote_file2')";
  $result = mysql_query($query);
  if(!$result){
     $error = 'An error occured: '. mysql_error().'<br />';
     $error.= 'Query was: '.$query;
     echo $error;
     die($message);
  }
有谁能帮我一下吗?

mysql_query是一个过时的PHP库的一部分,不再受支持。与数据库交互的更可靠的方法是mysqli。使用mysqli,您将能够使用预处理语句。预处理语句是验证输入并缓解此类问题(输入带有引号/标记)的一种方法。看一下这个例子:

$db = new mysqli("host","user","pw","database");
$stmt = $db->prepare("INSERT INTO projects VALUES (NULL, '?', '?', '?', '?','?')");
$stmt->bind_param('s', $atitle); // s means string in the first param
$stmt->bind_param('s', $acontent); // s means string in the first param    
... // same for all other parameters in your query
$stmt->execute();

更多信息:http://php.net/manual/en/mysqli.quickstart.prepared-statements.php

我强烈推荐使用mysqli。它是当前的和受支持的。预处理语句是防御SQL注入和捕获此类错误的最佳方式。它将为您清理输入并考虑引号。

您可以尝试stripslashes()取消引号字符串。更多详细信息请访问PHP文档网站。