请教个简单的问题

2016-06-16 09:45:46 +08:00
 lyp111332
function fetchOne($sql,$result_type=MYSQL_ASSOC){
$result=mysql_query($sql);
$row=mysql_fetch_array($result,$result_type);
return $row;
}
我这个函数主要是为了指定得到一条记录,为什么$row=mysql_array($result,$result_type);这条语句会报错?
报错代码: mysql_arrray()expcts parameter 1 to be resource, boolean given
3797 次点击
所在节点    PHP
31 条回复
66beta
2016-06-16 09:59:11 +08:00
val_dump 打印$result 自己看
jswh
2016-06-16 10:00:42 +08:00
出错了吧, mysql_query 里也没见 connect
alex321
2016-06-16 10:03:42 +08:00
$result 没结果。。参见官方手册: http://php.net/manual/en/function.mysql-query.php
然后,换到 mysqli 吧。。。
lyp111332
2016-06-16 10:07:47 +08:00
@66beta
@alex321
@jswh $sql 语句 我是这样写的 $sql="SELECT * FROM admin where username='$username' and password='$password'"
JiShuTui
2016-06-16 10:08:23 +08:00
mysql_arrray 第一个参数必须是资源 resource 类型,结果你给了布尔 boolean 类型
所以 $result 是布尔类型,而且可以推测出是 FALSE ,也就是说 mysql_query($sql) 返回 FALSE 了, sql 语句没有正确执行
JiShuTui
2016-06-16 10:10:01 +08:00
你把 $sql 打印出来看看拼出来的 sql 语句是啥
lyp111332
2016-06-16 10:16:09 +08:00
@JiShuTui 噢,那请问下如何将布尔 boolean 类型改为资源 resource 类型
lyp111332
2016-06-16 10:26:14 +08:00
@JiShuTui $sql= "select * from admin where username='{$username}' and password='{$password}'"
wesley
2016-06-16 10:29:20 +08:00
1. 你的 mysql 连接在哪里?

2. mysql_*系列函数在 php7 中已经移除

3. mysql_query 还少个参数
raincious
2016-06-16 10:29:30 +08:00
> 噢,那请问下如何将布尔 boolean 类型改为资源 resource 类型

噗。

$result=mysql_query($sql);

if (!$result) {
return false;
}
lyp111332
2016-06-16 10:47:45 +08:00
@wesley mysql 连接 con = mysql_connect("localhost","root","root");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}


mysql_select_db("emp", $con);
mysql_set_charset(utf8);
我现在用的是 php5.4
raincious
2016-06-16 12:02:55 +08:00
@lyp111332

你应该更仔细的检查一下边际情况。

`mysql_select_db`,`mysql_set_charset`这两个函数都会在错误的时候返回 false ,你需要检查它们的执行结果,而不是盲目的假定他们执行了而跳过检查。

建议你还是用一个数据库操作类来处理与 MySQL 的交互,比如用 http://medoo.in ,而不要自己手动去做。
Jakesoft
2016-06-16 12:28:41 +08:00
总对用 mysql_query 函数持鄙夷的眼光,我这是什么心态?
oyxhm
2016-06-16 16:57:37 +08:00
@Jakesoft 为什么我也是,用个 PDO 都好
touch
2016-06-16 17:24:28 +08:00
赶紧换 PDO 吧
leetao94
2016-06-16 17:27:39 +08:00
为啥不换 PDO
Sunyanzi
2016-06-16 18:34:16 +08:00
只有我觉得 LZ 的问题整个都很奇怪吗 ... mysql 扩展根本就没有 mysql_arrray 这么个函数 ...

语句报错和错误代码说的应该都是 mysql_fetch_array 的事 ... 我想不通为什么复制都能复制错 ...

楼上都在说楼主得到这个错误可能的原因 ... 而我根本不打算解释这个 ... 因为说对了也没意义 ...

一直以来我都在各种时间各种地点反复不停的重申不要用 mysql 系列的函数 ... 看来还是收效甚微 ...

现在 2016 年都过去一半了我居然还是能看到这么连数据库的新人 ... 略可悲 ...

说回正事 ... 如果你只是想连数据库的话 ... 把你现在所有跟数据库有关的代码都删了换成下面的 ...



这代码我专门为你写的 ... 我故意没贴文本而是贴的图 ... 你需要照着我写的重新自己手打一遍 ...

代码不长 ... 我简化了各种东西只留下核心部分 ... 你也过过脑子 ... 别总是复制粘贴吃现成的 ...

第四行到第七行的四个类常量是配置 ... 需要按你的环境改 ... 其他保持不动就可以 ...

这是教学类的代码 ... 并不适合生产 ... 不够优化而且 PDO->query 和错误详情什么的我也没写 ...

总之先学会走再想办法跑起来 ... 等你习惯 prepare / execute 之后再自己来优化我这个例子就好 ...

使用方法在下面象征性的给你写了几个 ... 虽然不强求但最好养成大小写和使用 backtick 的习惯 ...



大体就是这样 ... 你有什么问题再问吧 ... 以及赶紧把过时的教程扔了 ... 实在太误人子弟 ...
ragnaroks
2016-06-16 20:47:40 +08:00
没有框架的话,建议立刻使用 PDO.
eoo
2016-06-16 22:44:35 +08:00
mysqli pdo 按自己需要你选一个
Jakesoft
2016-06-16 23:21:15 +08:00
@Sunyanzi 赞,不过你的代码如何实例化?,好像没有 public 的实例化方法

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/286079

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX