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

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

致命錯(cuò)誤:調(diào)用布爾值上的成員函數(shù)bindparam()

致命錯(cuò)誤:調(diào)用布爾值上的成員函數(shù)bindparam()

暮色呼如 2019-06-06 15:31:38
致命錯(cuò)誤:調(diào)用布爾值上的成員函數(shù)bindparam()我忙著處理一個(gè)從DB獲取設(shè)置的函數(shù),突然,我遇到了以下錯(cuò)誤:Fatal error: Call to a member function bind_param() on boolean in C:\xampp2\htdocs\application\classes\class.functions.php on line 16通常情況下,這意味著我從不存在的表和東西中選擇一些東西。但在這種情況下,我不是.這是getSetting職能:public function getSetting($setting){     $query = $this->db->conn->prepare('SELECT value, param FROM ws_settings WHERE name = ?');     $query->bind_param('s', $setting);     $query->execute();     $query->bind_result($value, $param);     $query->store_result();     if ($query->num_rows() > 0)     {         while ($query->fetch())          {             return $value;             if ($param === '1')             {                 $this->tpl->createParameter($setting, $value);             }         }     }     else     {         __('invalid.setting.request', $setting);     }}這個(gè)$this->db變量通過構(gòu)造函數(shù)傳遞。在需要的情況下,這是:public function __construct($db, $data, $tpl){     $this->db = $db;     $this->tpl = $tpl;     $this->data = $data;     $this->data->setData('global', 'theme', $this->getSetting('theme'));}此外,由于我使用的是數(shù)據(jù)庫,所以我的數(shù)據(jù)庫連接:class Database{     private $data;     public function __construct($data)     {     $this->data = $data;     $this->conn = new MySQLi(       $this->data->getData('database', 'hostname'),        $this->data->getData('database', 'username'),        $this->data->getData('database', 'password'),        $this->data->getData('database', 'database')     );     if ($this->conn->errno)     {         __('failed.db.connection', $this->conn->errno);     }     date_default_timezone_set('Europe/Amsterdam');}我已經(jīng)測試了連接,100%的陽性,它的工作原理。我在配置文件中設(shè)置DB連接:'database' => array(     'hostname' => '127.0.0.1',     'username' => 'root',     'password' => ******,     'database' => 'wscript')現(xiàn)在奇怪的是:表存在,請求的設(shè)置存在,DB存在,但是錯(cuò)誤不會(huì)留下。這里有一些證據(jù)證明DB是正確的:
查看完整描述

3 回答

?
汪汪一只貓

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

問題在于:

$query = $this->db->conn->prepare('SELECT value, param FROM ws_settings WHERE name = ?');$query->bind_param('s', $setting);

這個(gè)prepare()方法可以返回false你應(yīng)該檢查一下。為什么它會(huì)回來false,可能是表名或列名(在SELECTWHERE條款)是不正確的?

另外,考慮使用類似的$this->db->conn->error_list若要檢查解析SQL時(shí)發(fā)生的錯(cuò)誤,請執(zhí)行以下操作。(我偶爾會(huì)回顯實(shí)際的SQL語句字符串,并粘貼到phpMyAdmin中進(jìn)行測試,但肯定有一些地方失敗了。)


查看完整回答
反對 回復(fù) 2019-06-06
?
12345678_0001

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

任何時(shí)候你得到.。

“致命錯(cuò)誤:對布爾值上的成員函數(shù)BIND_PARAM()的調(diào)用”

.這很可能是因?yàn)槟愕牟樵冇袉栴}.這個(gè)prepare()可能會(huì)回來FALSE(一個(gè)布爾值),但是這個(gè)通用的失敗消息并沒有給你留下太多線索。如何發(fā)現(xiàn)您的查詢有什么問題?你,你們!

首先,確保打開錯(cuò)誤報(bào)告并使其可見:在打開文件后立即將這兩行添加到文件的頂部。<?php標(biāo)簽:

error_reporting(E_ALL);ini_set('display_errors', 1);

如果在php.ini中設(shè)置了錯(cuò)誤報(bào)告,則不必?fù)?dān)心這一點(diǎn)。只需確保您優(yōu)雅地處理錯(cuò)誤,不要向用戶透露任何問題的真正原因。向公眾揭示真正的原因可能是給那些想要傷害你的網(wǎng)站和服務(wù)器的人一個(gè)金刻的邀請。如果不希望向?yàn)g覽器發(fā)送錯(cuò)誤,則始終可以監(jiān)視Web服務(wù)器錯(cuò)誤日志。日志位置因服務(wù)器而異,例如,在Ubuntu上,錯(cuò)誤日志通常位于/var/log/apache2/error.log..如果您正在檢查Linux環(huán)境中的錯(cuò)誤日志,可以使用tail -f /path/to/log在控制臺(tái)窗口中查看實(shí)時(shí)發(fā)生的錯(cuò)誤.或您所做的錯(cuò)誤。

一旦您對標(biāo)準(zhǔn)錯(cuò)誤報(bào)告進(jìn)行了平方,添加了對數(shù)據(jù)庫連接和查詢的錯(cuò)誤檢查,將為您提供更多關(guān)于正在發(fā)生的問題的詳細(xì)信息。查看此示例,其中列名不正確。首先,返回通用致命錯(cuò)誤消息的代碼:

$sql = "SELECT `foo` FROM `weird_words` WHERE `definition` = ?";$query = $mysqli->prepare($sql)); 
// assuming $mysqli is the connection$query->bind_param('s', $definition);$query->execute();

這個(gè)錯(cuò)誤是通用的,對你解決正在發(fā)生的事情沒有多大幫助。

使用更多的代碼行,您可以獲得非常詳細(xì)的信息,您可以使用這些信息來解決問題。立馬..檢查prepare()語句的真實(shí)性,如果它是好的,您可以繼續(xù)綁定和執(zhí)行。

$sql = "SELECT `foo` FROM `weird_words` WHERE `definition` = ?";if($query = $mysqli->prepare($sql)) { // assuming $mysqli is the connection
    $query->bind_param('s', $definition);
    $query->execute();
    // any additional code you need would go here.} else {
    $error = $mysqli->errno . ' ' . $mysqli->error;
    echo $error; // 1054 Unknown column 'foo' in 'field list'}

如果有什么問題,你可以說出一條錯(cuò)誤信息,直接帶你去處理這個(gè)問題。在這種情況下沒有foo列中,解決問題是微不足道的。

如果您選擇,可以將此檢查包含在函數(shù)或類中,并像前面提到的那樣優(yōu)雅地處理錯(cuò)誤來擴(kuò)展它。


查看完整回答
反對 回復(fù) 2019-06-06
?
MYYA

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

prepare因此,只有當(dāng)布爾值失敗時(shí)才返回它。FALSE,為了避免錯(cuò)誤,您需要檢查是否是True執(zhí)行前先:

$sql = 'SELECT value, param FROM ws_settings WHERE name = ?';if($query = $this->db->conn->prepare($sql)){
    $query->bind_param('s', $setting);
    $query->execute();
    //rest of code here}else{
   //error !! don't go further
   var_dump($this->db->error);}


查看完整回答
反對 回復(fù) 2019-06-06
  • 3 回答
  • 0 關(guān)注
  • 1493 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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