php real_escape_string(),查询不再工作了

时间:2012-06-14 10:33:38

标签: php mysql database mysql-real-escape-string

我希望能够添加和更新某些信息。现在一切正常,直到发现文本中的引号被发送到数据库时,我发现脚本不再有效。

所以我做了一些研究,发现我必须使用mysql_real_escape_string()函数来忽略引号。我已经完成了这个,但现在脚本已经不能正常工作了。我认为问题出在查询部分,但我没有看到问题。以下是代码:

<?php
if(isset($_POST['bevestiging']))
{   
    $ID = (int)$_GET['ID'];

    $titel = mysql_real_escape_string($_POST['Titel']);
    $ondertitel = mysql_real_escape_string($_POST['ondertitel']);
    $wanneer = mysql_real_escape_string($_POST['wanneer']);
    $datum = mysql_real_escape_string($_POST['datum']);
    $afbeelding = mysql_real_escape_string($_POST['afbeelding']);
    $intro = mysql_real_escape_string($_POST['intro']);
    $main = mysql_real_escape_string($_POST['main']);

    $query = "UPDATE voorstellingen 
              SET '$titel','$ondertitel','$wanneer','$datum','$afbeelding','$intro','$main' 
              WHERE id = $ID";

    mysql_query($query) or die('Error, bewerken van voorstelling is mislukt');  
    $query ="FLUSH PRIVILEGES"; 
    echo"De voorstelling is succesvol bewerkt";
}
else{

    $ID = (int)$_GET['ID'];
    $query="SELECT * FROM voorstellingen WHERE id = $ID";
    $result = mysql_query($query) or die('Error, bewerken van voorstelling is     mislukt');;
?>

2 个答案:

答案 0 :(得分:4)

您的更新查询应该是:

$query = "UPDATE voorstellingen SET title = '".$titel."' .....";

请参阅:UPDATE Syntax

答案 1 :(得分:0)

mysql_real_escape_string函数返回错误FALSE。您可以查看以下行的返回类型

$titel = mysql_real_escape_string($_POST['Titel']);

看它是否成功。您无需检查下一行。如果第一次函数调用出错,很可能意味着在调用函数之前没有SQL连接。因为在使用mysql_real_escape_string()之前需要MySQL连接,否则会生成级别E_WARNING的错误,并返回FALSE

如果上述建议无法解决您的问题,请详细说明您面临的错误以及在哪一行。