PHP:让sqlite\u escape\u字符串正常工作。允许保存撇号
问题:编辑语言时,不能在文本字段中添加撇号。如果这样做,记录将不会与新编辑一起保存 目标:编辑后,允许这些编辑包含撇号并正确保存 当前:可以使用数字、字母和符号,但不能使用撇号 我试着这么做,以为它会起作用,但没有用:PHP:让sqlite\u escape\u字符串正常工作。允许保存撇号,php,arrays,string,escaping,Php,Arrays,String,Escaping,问题:编辑语言时,不能在文本字段中添加撇号。如果这样做,记录将不会与新编辑一起保存 目标:编辑后,允许这些编辑包含撇号并正确保存 当前:可以使用数字、字母和符号,但不能使用撇号 我试着这么做,以为它会起作用,但没有用: $val = (isset($airport_info[$airport_key])) ? sqlite_escape_string($airport_info[$airport_key]) : ""; 下面是原始代码 <div class="inline_div
$val = (isset($airport_info[$airport_key])) ? sqlite_escape_string($airport_info[$airport_key]) : "";
下面是原始代码
<div class="inline_div_right">
<table>
<?php
$j=1;
$some_langs_hidden = 0;
foreach(array_keys($fields) as $airport_key)
{
if(is_numeric($airport_key)) continue;
if(preg_match("/name_/", $airport_key))
{
$lang_iso = substr($airport_key, -2);
$val = (isset($airport_info[$airport_key])) ? $airport_info[$airport_key] : "";
$row_visibility = "";
if(!in_array($lang_iso, $used_languages))
{
$row_visibility = "hidden_class";
$some_langs_hidden = 1;
}
$row_class = ($j%2 == 0) ? "shade1" : "shade2";
?>
<tr class="<?php echo $row_class.' '.$row_visibility; ?>">
<td class='ca_left_column'><?php echo $languages[$lang_iso]; ?></td>
<td><input type='textfield' id='<?php echo $airport_key; ?>' name='<?php echo $airport_key; ?>' class='textfield_class_large' onkeypress="hideErrorMsg(); enterSubmission(event, fcn)" value='<?php echo $val; ?>'></td>
</tr>
<?php
$j++;
}
}
?>
</table>
</div>
欢迎您的任何意见 定义了一个函数:
function sqlSecurity($sql_string)
{
$return_string = sqlite_escape_string($sql_string);
$val = stripslashes($return_string);
return $val;
}
在processAJAX.php文件中调用此函数,主线为:
$query .= ", name_$lang_code = '".sqlSecurity($_REQUEST["name_$lang_code"])."'";
然后,对于文本字段中的视图值:
value="<?php echo str_replace('"', '"', $val); ?>"
值=“如果记录未保存,则听起来像是数据库错误。您是否使用合适的SQLite函数来测试和报告错误情况?嗨,哈弗,不,我不是。要知道我可以保存编辑过的记录,只要它不包含撇号。啊哈,问题出在你的HTML中。尝试value=''
。如果撇号进入该字符串,它会过早地关闭属性,并损坏标记的其余部分。无论如何,您应该始终检查数据库代码中的错误条件。假设对数据库系统的每次调用都会失败,那么当它失败时,您就已经能够优雅地捕捉到它了。是的,反斜杠就是如何避开撇号的。这就是文字撇号与HTML属性的分隔撇号/语音标记的区别。试试看!