我正在使用一个jQuery AJAX请求到一个名为的页面,该页面like.php连接到我的数据库并插入一行。这是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(),它会很好。
$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"]确实包含某些成分?
$_POST["likeMsg"]
至于mysql_real_escape_string()返回空值,该 手册说只有一种情况可能发生:
注意:在使用mysql_real_escape_string()之前,需要MySQL连接,否则将生成E_WARNING级错误,并返回FALSE。如果未定义link_identifier,则使用最后一个MySQL连接。
不过,这里似乎并非如此,因为您确实有一个连接打开了。奇怪。