使用php在mysql中插入特殊字符

时间:2011-10-25 17:40:15

标签: php mysql special-characters

什么时候,我想插入“我很好,你好吗”。而且,当我回头看数据库时,我看到,只插入“我很好”,其余的单词从该句子中删除。当我在句子之间使用'时,也会出现此问题。

我的示例代码是

$title= mysql_real_escape_string($_POST['title']);
mysql_query("insert into table_db(TITLE) values ('".$title."')") or die(mysql_error());

我在google上搜索过,发现了很多解决方案,但是,我的问题仍然没有解决。 帮助将不胜感激!!

VARCHAR(300)

3 个答案:

答案 0 :(得分:2)

您正在使用正确的方法使该字符串对于查询“安全”,因此查询本身不太可能导致问题。 TITLE字段的类型/大小是多少?如果它是一个char(9)或varchar(9),那么这只会保留你的“我很好”并忽略其余部分。

答案 1 :(得分:1)

我不熟悉PHP,但这种问题通常可以通过使用绑定参数(又名“绑定变量”)并让底层数据库API担心特殊字符来解决。 / p>

通过自己转义和连接字符串,你基本上认为转义函数相对于你选择的数据库是最新的,这似乎不是这里的情况。

答案 2 :(得分:0)

尝试

mysql_query("INSERT INTO test_tbl values('$title')");

而不是

mysql_query("insert into table_db(TITLE) values ('".$title."')") or die(mysql_error());

我的下面的代码工作正常

<?php 
    mysql_connect('localhost','root','');
    mysql_select_db('core');

    if(isset($_POST['submit'])){
        echo $title=mysql_real_escape_string($_POST['title']);
    mysql_query("INSERT INTO test_tbl values(null,'','','$title')");
    }
?>


<html>
    <body>
        <form method="post">
            <input type="text" name="title">
            <input type="submit" name="submit">
        </form>
    </body>
</html>