当前位置: 首页 > 面试题库 >

mysql_real_escape_string()只是使一个空字符串?

拓拔麒
2023-03-14
问题内容

我正在使用一个jQuery AJAX请求到一个名为的页面,该页面like.php连接到我的数据库并插入一行。这是like.php代码:

<?php

// Some config stuff
define(DB_HOST, 'localhost');
define(DB_USER, 'root');
define(DB_PASS, '');
define(DB_NAME, 'quicklike');

$link = mysql_connect(DB_HOST, DB_USER, DB_PASS) or die('ERROR: ' . mysql_error());
$sel = mysql_select_db(DB_NAME, $link) or die('ERROR: ' . mysql_error());

$likeMsg = mysql_real_escape_string(trim($_POST['likeMsg']));
$timeStamp = time();

if(empty($likeMsg))
    die('ERROR: Message is empty');

$sql = "INSERT INTO `likes` (like_message, timestamp)
        VALUES ('$likeMsg', $timeStamp)";

$result = mysql_query($sql, $link) or die('ERROR: ' . mysql_error());

echo mysql_insert_id();

mysql_close($link);

?>

有问题的线是$likeMsg = mysql_real_escape_string(trim($_POST['likeMsg']));。它似乎只是返回一个空字符串,并且在我的数据库中,like_message我看到的所有列都是空白条目。如果我删除mysql_real_escape_string(),它会很好。

如果有帮助,这是我的jQuery代码。

$('#like').bind('keydown', function(e) {
    if(e.keyCode == 13) {
        var likeMessage = $('#changer p').html();

        if(likeMessage) {
            $.ajax({
                cache: false,
                url: 'like.php',
                type: 'POST',
                data: { likeMsg: likeMessage },
                success: function(data) {
                    $('#like').unbind();
                    writeLikeButton(data);
                }
            });
        } else {
            $('#button_container').html('');
        }
    }
});

所有这些jQuery代码都可以正常工作,我已经自己独立测试过。

非常感谢任何帮助,谢谢。


问题答案:

您是否确定1000%$_POST["likeMsg"]确实包含某些成分?

至于mysql_real_escape_string()返回空值,该
手册说只有一种情况可能发生:

注意:在使用mysql_real_escape_string()之前,需要MySQL连接,否则将生成E_WARNING级错误,并返回FALSE。如果未定义link_identifier,则使用最后一个MySQL连接。

不过,这里似乎并非如此,因为您确实有一个连接打开了。奇怪。



 类似资料:
  • 场景:用于编辑产品详细信息的HTML文档被编码为ISO-8859-1,并将POST数据发送到PHP文件(也被编码为ISO-8859-1)。这个PHP文件有mysql_real_escape_string-functions来清理输入。数据库/MySQL server字符集为UTF-8。问题是,当POST字符串中包含斯堪的纳维亚字母(ä,ö,å)时,mysql_real_escape_string返

  • 问题内容: 我有一个发誓的同事 在整个项目中可用的常量类中。这样,我们可以写类似 代替 我说是 不值得-它不会在堆/堆栈/字符串池中节省任何空间, 丑陋 滥用常量类。 谁是白痴? 问题答案: 默认情况下,字符串文字是Interned的,因此无论您在代码中多次引用 “” ,都将只有一个空的String对象。声明EMPTY_STRING没有任何好处。否则,您最好为整数文字声明一个,两个,三个,四个等。

  • rank ▲ ✰ vote url 41 487 108 705 url 检查一个字符串是否是一个数字 如果一个字符串可以被看做一个数字那么有什么好的方法可以检测出来? 我能想到的方法: def is_number(s): try: float(s) return True except ValueError: return Fals

  • 我有这三个字符串: 我如何检查这些字符串中哪一个只包含字母还是只包含数字(用R表示)? 只能在字母检查中为TRUE 它对很有效,但对也很有效,这是我不想要的。 提前谢了。

  • 我想打这个电话并返回一个字符串,但我有这个错误: “java.lang.非法状态异常:块()/块第一()/块最后())正在阻塞,这在线程反应器中不受支持” 我不明白为什么我做错了?WebClient支持异步和同步调用。 这是一个只有3个依赖的springboot项目。 我怎么能像正常的同步调用一样只返回一个字符串? 谢谢。

  • 我想做一个字符串验证,规则是字符串只允许有以下字符: null 如果你只有不允许的字符,它会工作,如果我有允许的字符混合在里面,它会返回true