当我使用mysql_real_escape_string时,数据无法正确存储

时间:2015-02-12 10:29:59

标签: php mysql

我从atom xml feed url获取数据。我正在使用Rss feed解析数据并存储到数据库中。在存储数据之前,我正在为每个变量使用mysql_real_escape_string。

function endElement($parser, $tname) 
{
    if ($tname == "ENTRY") {
    $job_id=explode('job/',$this->id);  
    $job_title1=mysql_real_escape_string($this->title); 
    $job_title=$job_title1;
    } 
}

解析后我将数据存储到数据库中

mysql_query("INSERT INTO tbl_job (job_id,job_title) values ('$job_id',' $job_title');

我使用表格排序作为utf8_general_ci。因为我正在修饰和英语文本。 这完全正常。 但问题是当我搜索确切的单词然后我没有得到那个工作。

例如:假设在表格中有些记录将job_title记录为 php developer ,当我在查询框中搜索该单词时,我没有得到结果。

 select * from tbl_jobs where job_title like 'php developer'

当我使用%时,我会得到结果。

select * from tbl_jobs where job_title like 'php developer%'

但是job_title包含 php开发者,但结果不会出现

当我删除MySQL_real_escape_string并存储数据时,我正确地得到结果。我得到了确切的结果。但是在存储了一些记录之后将数据存储到数据库中时,存储停止了数据中的引用。

请帮我解决这个问题。

2 个答案:

答案 0 :(得分:0)

我认为您的数据可能会保存为任何换行字符或带空格的制表符。

使用 REPLACE 。这会丢弃所有回车和换行:

SELECT REPLACE(REPLACE(log, '\r', ''), '\n', '') FROM test;

如果你只想放弃尾随回车和 换行,您可以改为使用TRIM:

SELECT TRIM(TRAILING '\r\n' FROM log) FROM test;

此链接可能对您有用MySQL Removing trailing linebreaks from a column

答案 1 :(得分:0)

你应该做的最好的事情是使用PHP PDO。它更易于使用和所有面向对象,使您的编程更加快速和干净。

http://php.net/manual/en/book.pdo.php