首頁 >後端開發 >php教程 >提取含字母用户名数据出错的问题

提取含字母用户名数据出错的问题

WBOY
WBOY原創
2016-06-23 13:22:59824瀏覽

在用户登录后,我用以下语句提取已登录用户的数据:
include("IncDB.php"); 
session_start () ;
$result=mysql_query("SELECT * FROM userlinks where id='a02' and userid=".$_SESSION['id']." order by datetime desc limit 1",$link);
$row = mysql_fetch_row($result);
echo "$row[1]"; 
echo"
"; 
echo "$row[2]";

mysql_close($link); 
?> 

问题是当全数字用户登录时能正确显示所提取的数据,但如果用户名含字母或汉字,显示内容为空,什么都没有;并且还报错:Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in....为什么?

我的数据库和网页都是用的UTF-8编码。数据库里面是有数据的,不是为空。谢谢我快疯了。。。。


回复讨论(解决方案)

当全数字用户登录时能正确显示所提取的数据,但如果用户名含字母或汉字,显示内容为空,什么都没有并且还报错:Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in....

字符串要用引号括起,这是常识!

 $result=mysql_query("SELECT * FROM userlinks where id='a02' and userid=".$_SESSION['id']." order by datetime desc limit 1",$link) or die(mysql_error());

$result=mysql_query("SELECT * FROM userlinks where id='a02' and  userid='".$_SESSION['id']."' order by datetime desc limit 1",$link);

这样是否更清晰点呢

$result = mysql_query("SELECT * FROM userlinks where id='a02' and userid='$_SESSION[id]' order by datetime desc limit 1",$link);

我真的是菜鸟一个,请见谅。没太懂。区别是不是就是session那里应该用单引号,而我用的双引号?。但我看楼上也有人回复用双引号啊。

我用了引号的~~

是多了后面die那段代码么?

userid='aa'   这里的aa需要引号括起来,单引号和双引号都可以。

你echo 你的sql就清楚了

哥,我的原来就有引号啊。
$result=mysql_query("SELECT * FROM userlinks where id='a02' and userid=".$_SESSION['id']." order by datetime desc limit 1",$link);

userid=".$_SESSION['id']." order
在 sql 指令中括起 $_SESSION['id'] 的值的引号在哪里?
你有的只是组装 php 字符串的引号

$_SESSION['id'] = 'abc123';$sql = "SELECT * FROM userlinks where id='a02' and userid=".$_SESSION['id']." order by datetime desc limit 1";echo $sql; //自己看看userid字段的值有没有用引号括起来

哥一看就是高手。是不是应该这样?
$result=mysql_query("SELECT * FROM userlinks where id='a02' and userid='".$_SESSION['id']." 'order by datetime desc limit 1",$link);
我需要多加一个单引号就可以了吧?我很菜,而且很笨,麻烦啊。

我是手机上的论坛,我记得我也这么加过引号的,好像也不行。

谢谢xuzuning和jordan102两位哥!!要是能解决了,我能各给两位30么?

userid='".$_SESSION['id']." 'order 这样是不行的
要 userid='".$_SESSION['id']."' order 这样
不然就多了个空格又查不到了

我能各给两位30么
不行,除非你给帖子加分!

好的,我知道了。如果我回去测试解决了,一定加分。谢谢

$result=mysql_query("SELECT * FROM userlinks where id='a02' and userid=".$_SESSION['id']." order by datetime desc limit 1",$link);

改为

$result=mysql_query("SELECT * FROM userlinks where id='a02' and userid= ‘".$_SESSION['id']." ’ order by datetime desc limit 1",$link);

谢谢xuzuning和jordan102和fdipzone,已经解决了。谢谢!

为什么我只有10分可用?好像只能增10分了,就给xuzuning和jordan102各20了。不够的下次补上。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn