无法将链接插入数据库

时间:2011-10-22 00:51:52

标签: php sql

我将一个字符串传递给这个函数:

function linkify($text) {

  $text = eregi_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_\+.~#?&//=]+)',
    '<a href="\\1">\\1</a>', $text);
  $text = eregi_replace('([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_\+.~#?&//=]+)',
    '\\1<a href="http://\\2">\\2</a>', $text);
  $text = eregi_replace('([_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3})',
    '<a href="\\1">\\1</a>', $text);

  return $text;

}

我尝试将文本插入数据库中的一个字段,该数据库是一个500字符的varchar,我得到一个错误,并且文本无法插入,但是当我不使用该函数时,我没有得到任何错误。

有什么想法吗?

编辑: 这是我得到的错误:

"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'http://sitename.com/alpha/">http:/sitename.com/alpha/' at line 1"

因此它是函数linkify的一个问题...感谢帮助修复语法错误..看起来像双引号与单引号? 谢谢!

1 个答案:

答案 0 :(得分:0)

根据您的错误消息,几乎可以肯定您在插入数据之前没有转义数据

我假设你在这个例子中使用mysql

$value = mysql_escape_string($text);
$sql = "INSERT INTO TABLENAME (COLNAME) VALUES ('$value')";
mysql_query($sql) or die(mysql_error());