首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >该函数不与查询连接到数据库?

该函数不与查询连接到数据库?
EN

Stack Overflow用户
提问于 2018-08-28 02:28:28
回答 2查看 0关注 0票数 0

我正在使用一个函数,它应该将结果行作为一个关联数组,但它不会得到我,因为它根据主持人的指示从mysql更改为mysqli。

我究竟做错了什么

代码语言:javascript
复制
function dbquery($link,$query) {

    $result = mysqli_query($link, $query );
    if (!$result) {
        echo mysqli_connect_error();
        return false;
    } else {
        return($result);

    }
    mysqli_close($link);
}

连接数据库的功能

代码语言:javascript
复制
function dbconnect($db_host, $db_user, $db_pass, $db_name) {
    global $db_connect;
    $db_connect = mysqli_connect($db_host, $db_user, $db_pass);
    $db_select = mysqli_select_db($db_connect, $db_name);
    if (!$db_connect) {
        die("<div style='font-family:Verdana;font-size:11px;text-align:center;'><b>Unable to establish connection to MySQL</b><br />".mysqli_connect_error()." : ".mysqli_connect_error()."</div>");
    } elseif (!$db_select) {
        die("<div style='font-family:Verdana;font-size:11px;text-align:center;'><b>Unable to select MySQL database</b><br />".mysqli_connect_error($db_name)." : ".mysqli_connect_error()."</div>");
    }

}
$link = dbconnect($db_host, $db_user, $db_pass, $db_name);

哪里不对 ??

通知:未定义指数:SITEURL /home/sfera/public_html/locale/Polish-utf8/global.php上线 132 通知:未定义指数:SITEURL /home/sfera/public_html/locale/Polish-utf8/global.php上线 140 通知:未定义指数:SITEURL /home/sfera/public_html/locale/Polish-utf8/global.php上线 147

您知道如何从语言环境中删除此错误错误。我会告诉你,你知道发生了什么

代码语言:javascript
复制
    $locale['global_441'] = "Your account on ".$settings['sitename']."has been banned";
$locale['global_442'] = "Hello [USER_NAME],\n
Your account on ".$settings['sitename']." was caught posting too many items to the system in very short time from the IP ".USER_IP.", and have therefor been banned. This is done to prevent bots from submitting spam messages in rapid succession.\n
Please contact the site administrator at ".$settings['siteemail']." to have your account restored or report if this was not you causing this security ban.\n
".$settings['siteusername'];
// Lifting of suspension
$locale['global_450'] = "Suspension automatically lifted by system";
$locale['global_451'] = "Suspension lifted at ".$settings['sitename'];
$locale['global_452'] = "Hello USER_NAME,\n
The suspension of your account at ".$settings['siteurl']." has been lifted. Here are your login details:\n
Username: USER_NAME
Password: Hidden for security reasons\n
If you have forgot your password you can reset it via the following link: LOST_PASSWORD\n\n
Regards,\n
".$settings['siteusername'];
$locale['global_453'] = "Hello USER_NAME,\n
The suspension of your account at ".$settings['siteurl']." has been lifted.\n\n
Regards,\n
".$settings['siteusername'];
$locale['global_454'] = "Account reactivated at ".$settings['sitename'];
$locale['global_455'] = "Hello USER_NAME,\n
Last time you logged in your account was reactivated at ".$settings['siteurl']." and your account is no longer marked as inactive.\n\n
Regards,\n

虽然我在功能上有它,但它让我从基地开始论证

//从数据库中获取站点设置并将它们存储在$ settings变量中

代码语言:javascript
复制
$settings = dbarray(dbquery($link,"SELECT * FROM ".$db_prefix."setting"));

所以这是但是语言环境不想阅读它们

EN

回答 2

Stack Overflow用户

发布于 2018-08-28 10:54:51

mysqli_connect_error()应该只用于报告期间发生的错误mysqli_connect()。如果在执行查询时出错,则应使用mysqli_error()该错误。

而且,你在打电话mysqli_close($link);。这从未执行过,因为if语句的两个分支都是从函数返回的。但是你不应该关闭这个函数中的链接,你很可能想要为其他查询使用相同的链接。

所以功能应该是:

代码语言:javascript
复制
function dbquery($link,$query) {
    $result = mysqli_query($link, $query );
    if (!$result) {
        echo mysqli_error($link);
        return false;
    } else {
        return($result);
    }
}

同样,dbconnect()应该mysqli_error()在报告失败时使用mysqli_select_db()。它还需要返回连接而不是设置全局变量。

代码语言:javascript
复制
function dbconnect($db_host, $db_user, $db_pass, $db_name) {
    $db_connect = mysqli_connect($db_host, $db_user, $db_pass);
    $db_select = mysqli_select_db($db_connect, $db_name);
    if (!$db_connect) {
        die("<div style='font-family:Verdana;font-size:11px;text-align:center;'><b>Unable to establish connection to MySQL</b><br />".mysqli_connect_error()." : ".mysqli_connect_error()."</div>");
    } elseif (!$db_select) {
        die("<div style='font-family:Verdana;font-size:11px;text-align:center;'><b>Unable to select MySQL database $db_name</b><br />".mysqli_error($db_connect)." : ".mysqli_error($db_connect)."</div>");
    }
    return $db_connect;
}

您也可以将mysqli_connect()mysqli_select_db(),作为数据库名称可以被指定为一个额外的参数mysqli_connect()

代码语言:javascript
复制
mysqli_connect($db_host, $db_user, $db_pass, $db_name);
票数 0
EN

Stack Overflow用户

发布于 2018-08-28 11:53:14

我使用这个功能

代码语言:javascript
复制
$result = dbquery("SELECT * FROM ".$db_prefix."product  ");
$product = dbarray($result);

再次,dbquery函数

代码语言:javascript
复制
function dbquery($link,$query) {
    $result = mysqli_query($link, $query );
    if (!$result) {
        echo mysqli_connect_error();
        return false;
    } else {
        return($result);

    }
    mysqli_close($link);
}

我按你说的做了,但我还有错误

注意:未定义的变量:102行/home/sfera/public_html/funkcje.php中的db_connect 注意:未定义的变量:在第102行的/home/sfera/public_html/funkcje.php中查询 警告:mysqli_query()要求参数1为mysqli,在第102行的/home/sfera/public_html/funkcje.php中给出null 警告:include(locale // global.php):无法打开流:第164行/home/sfera/public_html/funkcje.php中没有此类文件或目录 警告:include():在/home/sfera/public_html/funkcje.php中打开'locale // global.php'以包含(include_path ='。:/ opt / alt / php70 / usr / share / pear')失败第164行 注意:未定义的变量:102行/home/sfera/public_html/funkcje.php中的db_connect 注意:未定义的变量:在第102行的/home/sfera/public_html/funkcje.php中查询 警告:mysqli_query()要求参数1为mysqli,在第102行的/home/sfera/public_html/funkcje.php中给出null

我这样做了。

代码语言:javascript
复制
function dbquery() {
    $result = mysqli_query($db_connect, $query);
    if (!$result) {
        echo mysqli_connect_error();
        return false;
    } else {
        return($result);

    }
}

这些错误导致你无法连接到基地?

他这样称呼它

代码语言:javascript
复制
$result = dbquery($link,"SELECT tac.kategoria, tac.tytul, tac.tytul, tac.images, tac.cena, tac.product_id, tac.min, tac.max, tac.promocja, 
tac.pierwsza_pozycja, tac.druga_pozycja, tac.cena, 
tac.opcja, tac.cena_1, tac.opcja_1, tac.cena_2, 
tac.opcja_2,tac.cena_3, tac.opcja_3, tac.cena_4,
 tac.opcja_4, tac.cena_5, tac.opcja_5, tac.cena_6, 
 tac.opcja_6, tac.cena_7, tac.opcja_7, tac.cena_8, 
 tac.opcja_8, tac.cena_9, tac.opcja_9 , tac.kwota_dodatku, 
 ta.przyrostek_categori,  wt.cena_towaru,  wt.cena_towaru_1, wt.min_towar, wt.cena_min_towaru
 FROM ".$db_prefix."product tac  
INNER JOIN ".$db_prefix."category ta ON tac.kategoria=ta.przyrostek_categori
LEFT JOIN ".$db_prefix."wybrany_towar wt ON wt.wybrany_towar_id=tac.product_id
WHERE kategoria='".$_GET['kategoria']."' AND product_id='".$_GET['product_id']."'");
$product = dbarray($result);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100008821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档