栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

“警告:mysql_query():提供的参数不是有效的MySQL-Link资源”

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

“警告:mysql_query():提供的参数不是有效的MySQL-Link资源”

根据注释,听起来问题似乎是由于

require_once()
在函数内部使用引起的。

正在发生两件事之一。要么:

  1. 你已经包括
    Connection.php
    在其他地方,所以当你的功能,它实际上并不包括在内,因为在中.. 曾经 的一部分
    require_once

要么…

  1. 工作的第一次调用的功能,但你把它叫做第二次,该文件已经被包括在内,不会再次包括在内。

问题在于,当第一次包含该文件时(假定是从该函数中来的),该

$connection
变量在函数作用域中创建,并且像其他任何函数变量一样,在该函数的末尾消失了。当您第二次调用该函数时,包含不会发生,因为您正在使用
require_once

您可能可以通过调用

require()
而不是来解决此问题
require_once()
,但这最终将在您每次调用该函数时重新连接到数据库-
这是很多不必要的开销。只需将include移到函数外部,然后将连接传递到函数中,或将其用作全局变量,这将更加清洁。

看起来像这样:

require_once('Connection.php');function getResult() {    global $connection;    $findQuery = "SELECt * FROM `Keys` WHERe `ID` = '$gID'";    $findResult = mysql_query($findQuery, $connection) or die(mysql_error());    $resultRow = mysql_fetch_assoc($findResult) or die(mysql_error());}

综上所述,此代码存在两个主要问题。

  1. 您正在使用的
    mysql_*
    功能已被弃用,并将很快从新版本的PHP中删除。有关更多详细信息,请参见此问题:为什么我不应该在PHP中使用mysql_ *函数?

实际上,切换到类似

mysqli_*
函数之类的东西实际上并不难-有一组非对象的函数与您现在所使用的几乎相同。

  1. 您在查询中包含一个变量,但没有正确转义它。至少应该调用
    mysql_real_escape_string()
    (或
    mysqli_real_escape_string()
    ),但是更好的解决方案是研究准备好的语句。您可以在此处找到有关准备好的语句的更多信息:如何防止PHP中的SQL注入?


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/421263.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号