在使用转义引号、php时遇到问题
我有一个for循环,它贯穿一组问题,每个问题旁边都有一个文本区域。但是,如果问题或答案中有撇号,就好像有人在问题中问“不”或“不能”,则不会将其插入数据库。我曾经尝试过使用条斜线和添加斜线来解决这个问题,但都没有效果。 这就是我到目前为止得到的 for循环将不带斜线的问题显示给用户在使用转义引号、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($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']);
}