欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

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

程序员文章站 2022-06-08 08:38:57
...
在用户登录后,我用以下语句提取已登录用户的数据:
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了。不够的下次补上。