繁体   English   中英

如何在MySQL数据库中插入PHP代码段

[英]How to insert a php code snippet in mysql database

我有一个如下的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查询将此代码插入数据库时​​,由于代码因特殊字符而中断了sql查询,因此会发生mysql语法错误。 有什么办法吗?

谢谢。

使用mysql_real_escape_string()转义特殊字符。 不过,最好还是远离mysql_ *函数,而开始使用PDOmysqli_ *

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

是的,您可以这样做。 多种方式:

  1. PDO-实际上,这是最佳选择。 在PHP手册中研究此主题,因为它不仅可以保护PHP中的MySQL查询免受破坏,还可以提供更多帮助。
  2. addlashes()-添加斜杠以转义字符。 这肯定不会破坏您的MySQL查询。
  3. mysql_real_escape_string()
  4. 函数mysql_escape_string()

EDITED强调PDO相比以前的版本这个答案为PDO是远远超过其他选项更安全,也给了很多更可与PHP和MySQL工作时使用。

您将需要使用mysql_real_escape_string()来转义php代码,以便在插入时不会引发错误。 然后,如果要执行该语句,请对该语句运行eval()。 如果您在数据库中存储了混合的html和php,则可以这样调用eval。

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

只要确保您在数据库结果上加上stripslashes()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM