如何在mysql数据库中插入php代码片段

时间:2012-07-15 18:17:12

标签: php mysql html-entities

我有一个如下所示的PHP代码段:

function is_ancestor_of( $page_name = null, $post ) {

if(is_null($page_name))
return false;

// does it have a parent?
if (!isset( $post->post_parent ) OR $post->post_parent <= 0 )
return false;

//Get parent page
$parent = wp_get_single_post($post->post_parent);

 if ( $parent->post_name == $page_name ){
echo $parent->post_name.' - '.$page_name;
return true;
} else {
is_ancestor_of( $page_name, $parent );
}
}

我只是想在mysql数据库表中插入这整个代码,然后再次使用页面上的相同格式再次检查它。当我使用INSERT INTO查询简单地在数据库中插入此代码时,会发生mysql语法错误,因为代码因特殊字符而中断了sql查询。有没有办法做到这一点??

感谢。

3 个答案:

答案 0 :(得分:3)

使用mysql_real_escape_string()转义特殊字符。你最好远离mysql_ *函数并开始使用PDOmysqli_*

修改 如注释中所述,请确保将代码放在字符串中,并且DB字段是正确的数据类型。另外,请确保在整个字符串(或代码)上使用mysql_real_escape_string()(如果您坚持使用mysql_ *)。

答案 1 :(得分:2)

是的,你可以做到这一点。多种方式:

  1. PDO - 实际上这是最好的选择。在PHP手册中学习这个主题,因为这比仅仅保护PHP中的MySQL查询免受破坏更有帮助。
  2. addslashes() - 为转义字符添加斜杠。这肯定不会破坏你的MySQL查询。
  3. mysql_real_escape_string()
  4. 函数mysql_escape_string()
  5. <强> EDITED 与此答案的先前版本相比,强调了PDO,因为PDO比其他选项更安全,并且在使用PHP和MySQL时可以使用它。

答案 2 :(得分:0)

您将需要使用mysql_real_escape_string()来转义php代码,以便在插入时不会抛出错误。然后,如果要执行,则在语句上运行eval()。如果你有一个混合的html和php存储在数据库中,你会像这样调用eval

 eval('?>'.$dbresult.'<?php');

请确保在数据库结果上使用stripslashes()