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

php中文网
发布: 2016-06-23 13:22:59
原创
954人浏览过

在用户登录后,我用以下语句提取已登录用户的数据:
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编码。数据库里面是有数据的,不是为空。谢谢我快疯了。。。。

怪兽AI数字人
怪兽AI数字人

数字人短视频创作,数字人直播,实时驱动数字人

怪兽AI数字人 44
查看详情 怪兽AI数字人


回复讨论(解决方案)

当全数字用户登录时能正确显示所提取的数据,但如果用户名含字母或汉字,显示内容为空,什么都没有并且还报错: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了。不够的下次补上。

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号