2014-01-13 38 views
0

這裏是我想要的,但不能讓它與新的MySQLi工作,只是因爲我的主機沒有全新的PHP等等庫MySQLi的mysqli FECH陣列assoc命令替換NO工作

但是,必須有某種解決方案還是那個所有MYSQLI可以做?

因爲即使是醜陋的名字聽起來像PEDO,我只在mysqli的興趣,併爲這個簡單的事情解決,請不要談PDO。請不要更改我的腳本的結構。問題是唯一的是,如果有東西可以與MySQL工作,或者,如果我也許切換到MySQL的過程,而不是報表

<?php 
    $sql = new mysqli('localhost','user','pass','db'); 
    $who = $_GET['user']; 
    $query = $sql->prepare("SELECT * FROM profiles WHERE user=?"); 
    $query->bind_param("s",$who); 
    $result = $query->execute(); 
    while($row = $result->fetch_array(MYSQLI_ASSOC)) // << HERE IS THE PROBLEM // 

// I GET ERROR Fatal error: Call to a member function fetch_array() on a non-object in ... // 

「」但必須有某種方式來使其工作像我們做而($行= mysqli_fetch_array($ SQL))//

{ 
    ?> 


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>title</title> 
    </head> 

    <body> 
    CUSTOM HTML FOR A NICE DESIGN I WANT TO KEEP THE SAME DESIGN LAYOUT ETC... 

     HELLO <?php echo "$row[USERNAME]"; ?> 
     YOUR INFO IS <?php echo "$row[JUST_SOME_INFO]"; ?> 


    </body> 
    </html> 
    <?php 
    } 
    ?> 
+0

'不談論PDO,因爲即使是醜陋的名字聽起來像PEDO'你贏的趣聞 – Mark

+0

哈哈哈真正的名稱不好聽 – Firefighter

回答

0

評論這個字符串:

$result = $query->get_result(); 

你不需要這個。

+0

嗨。編輯它,現在我得到下面的錯誤致命錯誤:調用一個非對象的成員函數fetch_array() – Firefighter

+0

首先檢查你的'$ result'。我想,作爲查詢的結果,你有一個空值(NULL)。可能你沒有在你的數據庫中使用'$ who'的記錄。 – BaBL86

0

試試這一個。

<?php 
$sql = new mysqli('localhost', 'user', 'pass', 'db'); 
$who = $_GET['user']; 
$query = $sql->prepare("SELECT * FROM profiles WHERE user=?"); 
$query->bind_param("s", $who); 
$result = $query->execute() or die($query->error); 
while ($row = $result->fetch_array()) { 
    $username = $row[USERNAME]; 
    $info = $row[JUST_SOME_INFO]; 
} 
?> 


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>title</title> 
</head> 

<body> 
    CUSTOM HTML FOR A NICE DESIGN I WANT TO KEEP THE SAME DESIGN LAYOUT ETC... 

    HELLO <?php echo $username; ?> 
    YOUR INFO IS <?php echo $info; ?> 


</body> 
</html> 
+0

編輯它你的方式和致命的錯誤:調用一個非對象的成員函數fetch_array() – Firefighter

+0

我認爲你應該初始化另一個變量,該變量包含來自數據庫的檢索數據。 while($ row = $ result-> fetch_array()){ $ username = $ row ['USERNAME']; $ info = $ row ['JUST_SOME_INFO']; } – kazupooot

0

這就是當你開始複製和粘貼php時不知道它是什麼意思。這裏

的解決方案是:

全局調用變量之後imediately創建一個類$sql或聲明$ SQL。

嘗試

global $sql;

,但如果你真的想解決問題(通過使您的$sql變量的對象)

嘗試

$sql = array(); 
$sql['host'] = 'host'; 
$sql['user'] = 'user'; 
$sql['pass'] = 'password'; 
$sql['db'] = 'database'; 
global $sql; 
$db = new mysqli($sql); 

現在,當你想要做的事與db連接。

$db->action(); 

這只是基礎知識,可能無法正常工作。您可能應該在嘗試編寫自己的類之前閱讀更多關於php/mysqli的內容。

+0

程序代碼完全沒有問題。我用它來做大部分事情。 – r3wt

1

這裏是您的解決方案

您不必使用fetch_array()但使用fetch()

你也將收到fetch

$query->execute(); 

$query->bind_result($col1); 

while($row = $query->fetch()){ 
    printf("%s \n", $col1); 
} 

綁定使用bind_result結果可以直接使用$col1也不需要使用printf()

根據我的分貝我的工作實例說明,如果你想要更多的幫助之下,

$sql = new mysqli('localhost','user','pass','dbname'); 

$who = 'php'; 

$query = $sql->prepare("SELECT * FROM job WHERE skill=?"); 

$query->bind_param("s",$who); 


$query->execute(); 

$query->bind_result($col1); 

while($row = $query->fetch()){ 
    printf("%s \n", $col1); 
} 
+0

幾乎工作或不同的結果是警告:mysqli_stmt :: bind_result()[mysqli-stmt.bind-result]:綁定變量的數量與 – Firefighter

+0

中的準備語句中的字段數量不匹配至少我收到了一條新的錯誤消息 – Firefighter

+0

同樣使用$ query-> bind_result($ col1,$ col2,$ col3,...),如果你的表有3行,在bind_result中使用3個變量。 –