第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

PHP 將 fetch_field() 更改為 mysqli

PHP 將 fetch_field() 更改為 mysqli

PHP
瀟瀟雨雨 2022-07-16 11:20:10
我的 php 知識(shí)相當(dāng)有限,但我最近需要將一些網(wǎng)頁(yè)從舊版本的 php 5.2 更新到 php 7.3。我已經(jīng)設(shè)法更新了對(duì) mysqli 等的大多數(shù) mysql 引用并讓事情正常工作,但是有一個(gè)頁(yè)面使用了日歷,我真的在這部分和 fetch_field 部分苦苦掙扎,特別是我的任何例子發(fā)現(xiàn)似乎沒(méi)有類(lèi)似的格式。我需要更新的代碼如下;require_once('Connections/connAsh.php');mysql_select_db($database_connAsh, $connAsh);function selectonerow($fieldsarray, $table, $uniquefield, $uniquevalue){    //The required fields can be passed as an array with the field names or as a comma separated value string    if (is_array($fieldsarray)) {        $fields = implode(", ", $fieldsarray);    } else {        $fields = $fieldsarray;    }    //performs the query    $result = mysql_query("SELECT $fields FROM $table WHERE $uniquefield = '$uniquevalue'") or die("Could not perform select query - " . mysql_error());    $num_rows = mysql_num_rows($result);    //if query result is empty, returns NULL, otherwise, returns an array containing the selected fields and their values    if ($num_rows == NULL) {        return NULL;    } else {        $queryresult = array();        $num_fields = mysql_num_fields($result);        $i = 0;        while ($i < $num_fields) {            $currfield = mysql_fetch_field($result, $i);            $queryresult[$currfield->name] = mysql_result($result, 0, $currfield->name);            $i++;        }        return $queryresult;    }}我的編輯嘗試是;require_once('../Connections/connAsh.php')$connAsh->select_db($database_connAsh);function selectonerow($fieldsarray, $table, $uniquefield, $uniquevalue){    //The required fields can be passed as an array with the field names or as a comma separated value string    if (is_array($fieldsarray)) {        $fields = implode(", ", $fieldsarray);    } else {        $fields = $fieldsarray;    }
查看完整描述

2 回答

?
慕田峪4524236

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超5個(gè)贊

原來(lái)的功能在很多層面上都是錯(cuò)誤的。重新創(chuàng)建它的功能是沒(méi)有意義的。


基本上你在這里討價(jià)還價(jià)的只是幾個(gè) SQL 關(guān)鍵字。但這些關(guān)鍵字有助于提高可讀性。


出于某種原因,您決定智取幾代對(duì) SQL 語(yǔ)法非常滿(mǎn)意的程序員,并制造難以理解的胡言亂語(yǔ)


$row = selectonerow("some, foo, bar", "baz", "id", [$uniquevalue]);

而不是幾乎自然的英語(yǔ)


$row = selectonerow("SELECT some, foo, bar FROM baz WHERE id=?", [$uniquevalue]);

來(lái)吧。這不值得。


讓你的函數(shù)接受常規(guī)的 SQL 查詢(xún),而不是有限的難以理解的混亂。


function selectonerow(mysqli $conn, string $sql, array $params = []): array

{

    if ($params) {

        $stmt = $conn->prepare($sql);

        $stmt = $mysqli->prepare($sql);

        $stmt->bind_param(str_repeat("s", count($params), ...$params);

        $stmt->execute();

        $result = $stmt->get_result()

    } else {

        $result = $conn->query($sql);

    }

    return $result->fetch_assoc();

}

此功能將允許您使用任何查詢(xún)。例如,需要一個(gè)最高價(jià)格的行嗎?


$row = selectonerow("SELECT * FROM baz ORDER BY price DESC LIMIT 1");

需要更復(fù)雜的條件?沒(méi)問(wèn)題


$sql = "SELECT * FROM baz WHERE email=? AND activated > ?";

$row = selectonerow($sql, [$email, $date]);

等等。任何 SQL。任何條件。


查看完整回答
反對(duì) 回復(fù) 2022-07-16
?
小怪獸愛(ài)吃肉

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超1個(gè)贊

我建議去掉這個(gè)函數(shù)或者用 YCS 建議的函數(shù)替換它。


如果您真的想繼續(xù)使用此功能,請(qǐng)考慮以下修復(fù)。您使里面的代碼變得非常復(fù)雜,并且忘記將連接變量傳遞給函數(shù)。我已經(jīng)簡(jiǎn)化了它:


// open the DB connection properly inside Connections/connAsh.php

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

$connAsh = new mysqli('host', 'user', 'pass', $database_connAsh);

$connAsh->set_charset('utf8mb4');


// your function:

function selectonerow(mysqli $connAsh, $fieldsarray, $table, $uniquefield, $uniquevalue): array

{

    //The required fields can be passed as an array with the field names or as a comma separated value string

    if (is_array($fieldsarray)) {

        $fields = implode(", ", $fieldsarray);

    } else {

        $fields = $fieldsarray;

    }


    //performs the query

    $stmt = $connAsh->prepare("SELECT $fields FROM $table WHERE $uniquefield = ?");

    $stmt->bind_param('s', $uniquevalue);

    $stmt->execute();

    return $stmt->get_result()->fetch_assoc();

}

這是您的功能,但消除了很多噪音。我$connAsh在函數(shù)的簽名中添加了,所以你每次調(diào)用這個(gè)函數(shù)時(shí)都必須傳入它。該函數(shù)將始終返回一個(gè)數(shù)組;如果沒(méi)有獲取記錄,則數(shù)組將為空。這是推薦的方式。還要記住始終使用準(zhǔn)備好的語(yǔ)句!


查看完整回答
反對(duì) 回復(fù) 2022-07-16
  • 2 回答
  • 0 關(guān)注
  • 128 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)