2012-01-16 74 views
0

我創建了兩個函數,一個用於連接到MySQL數據庫,另一個用於運行特定查詢。 我輸入數據庫名稱作爲第一個函數連接到數據庫的參數,這工作正常,但我的問題是與第二個。 第二個函數返回$result運行查詢,但是當我使用mysql_fetch_array$result時,即使它應該給出多個輸出,它也會給出一個輸出。 由於我不是PHP專家,所以我找不到解決方案。請幫幫我。Php自定義函數對於Mysql查詢不起作用

下面是代碼:

文件Function.php

<?php 
function myconnect($data) 
{ 
    $db_host='localhost'; 
    $db_user='root'; 
    $db_pwd=''; 
    $data=$data; 
    $dbc = mysqli_connect($db_host, $db_user,$db_pwd,$data) or die (mysql_error()); 
    return $dbc; 
} 

function runquery($db,$table,$tcol,$tid)//(databse,table,column_name,identifier) 
{ 
    $dbc=myconnect($db); 
    $query="SELECT *FROM ".$table." WHERE ".$tcol."=".$tid." ORDER BY first_name ASC"; 
    $result = mysqli_query($dbc, $query); 
    return $result; 
} 
?> 

文件test.php的

<?php 
    require_once('testfunc.php'); 
    $result= runquery('user','user_basic','user_type','1'); 
    //runquery('database','table','col','id')/ 
    while($row=mysqli_fetch_array($result)) 
    { 
    echo '<strong>First Name:</strong>' . $row['first_name'] . '<br/>'; 
    } 
?> 

如果我所做的都錯了,然後建議我更好方式:-)

+0

你的問題不夠清楚。你能否詳細說明你想要完成什麼? – 2012-01-16 19:11:49

+0

* FROM應該是* FROM ...問題如果$ table沒有名爲first_name的列......請使用mysqli而不是mysql;或者(更好)pdo – 2012-01-16 19:13:46

+0

這段代碼可以使用[review](http://codereview.stackexchange.com/)。 – outis 2012-01-16 20:26:10

回答

0
function myconnect($db) 
{ 
    /*Removed redundant - single use variables*/ 

    /*DB name was passed to the client_flags parameter of mysql_connect instead of mysql_select_db*/ 
    $dbc = mysql_connect("localhost", "root","") or die (mysql_error()); 
    /*Inserted Line*/ 
    mysql_select_db($data); 
    return $dbc; 
} 

當前,您並未選擇數據庫 - 相當於USE DATABASE db_name。

夫婦的語法的變化和功能定義

function runquery($db,$table,$tcol,$tid)//(databse,table,column_name,identifier) 
{ 
    $dbc=myconnect($db); 
    /*Query and link identifier were in the wrong order*/ 
    return mysql_query("SELECT * FROM ".$table." WHERE ".$tcol."=".$tid." ORDER BY first_name ASC", $doc); 
} 

最後一對夫婦的語法變化,函數調用

require_once('testfunc.php'); 
$result= runquery('user','user_basic','user_type','1'); 
/*fetch associateive array of result during iteration*/ 
while($row=mysql_fetch_assoc($result)) 
{ 
    echo '<strong>First Name:</strong>' . $row['first_name'] . '<br/>'; 
} 
+0

你不應該使用mysql擴展,而應該使用mysqli擴展,因爲它是_improved_ – Jeremy 2012-01-18 19:22:21

+0

我還沒有讀過它。一旦我有機會看到問題的相關性,我會編輯我的答案。感謝您的高舉。 – CBusBus 2012-01-19 16:40:45

2

快速瀏覽顯示,在你的函數runquery

SELECT *FROM 

應該

SELECT * FROM 

音符後的空間*

編輯: 我也注意到你正在使用* mysqli_fetch_array *,這不是一個有效的mysqli方法。您正確使用mysql上的mysqli擴展,但您應該更多地瞭解statement fetch以解決此問題。我提供的鏈接提供了一個程序性的例子,它可以滿足您的需求。