0

我需要一些帮助!

我在站点管理页面上有一个表单,所有者填写他的项目并将其添加到 mysql 数据库中,但有时数据包含单引号或双引号,因此它不会添加到数据库中。

我尝试使用addlashes,但它仍然无法正常工作。

这是我尝试过的代码

$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);
  }

谁能帮我这个?

4

2 回答 2

0

您可以尝试stripslashes()取消引用带引号的字符串。更多详细信息可在此处的 PHP 文档网站上找到。

于 2013-06-14T11:50:18.120 回答
0

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 注入和捕获此类故障的最佳方法。它将为您清理输入并考虑引号符号。

于 2013-06-14T11:58:36.123 回答