Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在使用转义引号、php时遇到问题_Php_Mysql_Database_Magic Quotes - Fatal编程技术网

在使用转义引号、php时遇到问题

在使用转义引号、php时遇到问题,php,mysql,database,magic-quotes,Php,Mysql,Database,Magic Quotes,我有一个for循环,它贯穿一组问题,每个问题旁边都有一个文本区域。但是,如果问题或答案中有撇号,就好像有人在问题中问“不”或“不能”,则不会将其插入数据库。我曾经尝试过使用条斜线和添加斜线来解决这个问题,但都没有效果。 这就是我到目前为止得到的 for循环将不带斜线的问题显示给用户 for($i = 0; $i< sizeof($answered); $i++) { echo "<h3><center>" . stripslashes

我有一个for循环,它贯穿一组问题,每个问题旁边都有一个文本区域。但是,如果问题或答案中有撇号,就好像有人在问题中问“不”或“不能”,则不会将其插入数据库。我曾经尝试过使用条斜线和添加斜线来解决这个问题,但都没有效果。 这就是我到目前为止得到的

for循环将不带斜线的问题显示给用户

    for($i = 0; $i< sizeof($answered); $i++)
    {
        echo "<h3><center>" . stripslashes($question[$i]) . "</center></h3>";
        show_form($question[$i]);
    }
试试htmlentities$question[$i],entu引号;存储数据和html_实体_解码$question[$i],ENT_引号;在php.ini中设置magic\u quotes\u gpc=Off

在.htaccess中添加php_标志magic_quotes_gpc Off检查php.ini文件中是否启用magic_quotes_gpc。
如果启用了magic_quotes_gpc,请首先对数据应用条带斜杠。对已转义的数据使用此函数将转义数据两次。

是否将问题重新插入数据库?为什么?不是放回去,只是把答案放在提问的同一行。使用问题和另一个变量作为参考。不要在要输出的内容上添加斜杠。另外,在查询中使用带有参数的PDO,您不必担心斜杠或转义。我对PDO一点也不熟悉不,别这样!始终在应用程序的边界处编码/解码,而不是在核心处!存储数据时不使用任何编码,当显示数据时,htmlspecialchars会将其编码为html。@Francis-你能向我解释一下在边界编码/解码而不是在核心编码/解码是什么意思吗?我曾尝试仅使用mysqli_real_escape_字符串存储数据,但如果字符串中有单引号,我就无法实现这一点。htmlspecialchars和htmlentities不是通过将潜在破坏性字符编码到相应的实体中来消除其影响吗?以编码格式存储字符串是否有意义,以避免@java0001111在引号中遇到的问题@Francis如果我真的弄错了,你介意引导我朝正确的方向走吗?@A我的问题是,当我按下submit按钮时,发生了两件事:在singlequote没有显示后,变量和字符串的一部分中添加了更多的斜杠。例如:如果我有dot这个词,那么输出是don\\@java0001111,然后只使用mysql\u real\u escape\u字符串本身进行尝试。请检查您的php.ini中是否启用了magic_quotes_gpc。我最初仅使用mysql_real_escape_字符串进行了尝试,这就是我产生错误的原因。并且magic quotes处于启用状态。@java0001111这可能对您有用。@java0001111如果magic qoutes处于启用状态,请首先对数据应用条带斜杠。对已转义的数据使用此函数将转义数据两次
    if ( !empty($_POST['answer']) )
    {
        $quest = mysqli_real_escape_string ($dbc, $_POST['question']);
        $answer = mysqli_real_escape_string ($dbc, $_POST['answer']);
    }