我有一个严重的问题。我试图在数据库的页面中显示消息。一切都工作正常,除了我的PHP代码无法区分2,20,200,2000,20000等。与1,100,1000等相同。我认为问题是尾随零被忽略。
当消息发送给身份标识为20的人时,身份标识为2和200的人都会看到这些消息。
以下是代码:
if(isset($_GET['sent_to']) {
$message_to = $_GET['sent_to'];
$cookie = $_COOKIE['me'];
$slash =".";
$involved = $message_to . $slash. $cookie ;
$swap = $cookie .$slash. $message_to ;
$query = "select * from (
select * from messages where involved = {$involved} or involved = {$swap} order by id desc limit 10
) sub
order by id asc";
$result = mysql_query($query);
}
if(!empty($result)) {
while($fetch_result = mysql_fetch_array($result)) {
?>
echo $fetch_result['message'];
?>
问题是,如果$message_to
为20,则不会将其与2,200,2000等区分开来。它就像它忽略了url中的所有尾随零。有人帮助我。
答案 0 :(得分:0)
它默认为数字比较。
假设$cookie
是数字,那么你的字符串是100.2和100.20,它们是相同的数字。
强制MySQL通过引用变量
来使用字符串比较select * from messages where involved = {$involved} or involved = '{$swap}' order by id desc limit 10
请注意'
周围的swap
这将成为100.2
和100.20
不同的字符串
正如其他人已经注意到的那样,这对于SQL注入是不可思议的,并且还使用了已弃用的代码。请修复此错误。
你也应该看看你的数据库设计,因为它目前似乎没有正确地保存数据。一列应包含一个数据。不是包含2个数据的.
分隔值