2011-08-30 20 views
0

我有以下幾點:PHP和MySQL全文列打得不好在一起

本地主機:PHP版本5.3.0 遠程主機:PHP版本5.2.17

實際表上的遠程主機,託管這是運行mysql版本5.0.91

我有一個表varchar 30和LONGTEXT列。當我直接通過phpmyadmin對它運行SELECT語句時,兩個列在本地主機和遠程主機上均顯示正常。

奇怪的事情發生在我混入一點我自己的PHP。我在PHP中運行相同的語句,它在localhost上正常工作。在遠程主機上運行精確的PHP代碼將返回varchar列,但它應該是返回空白的LONGTEXT列。

這裏是我的PHP代碼:( 「第一」 是一個varchar 30列, 「最後」 是一個LONGTEXT列)

public function myCoolFunction() { 

    $stmt=mysqli_prepare($this->connection,"SELECT first,last FROM $this->tablename"); 
    mysqli_stmt_execute($stmt); 

    $rows=array(); 

    mysqli_stmt_bind_result($stmt,$row->first,$row->last); 

    while (mysqli_stmt_fetch($stmt)) { 
    $rows[]=$row; 
    $row=new stdClass(); 
    mysqli_stmt_bind_result($stmt,$row->first,$row->last); 

    } 

} 

的print_r($行)給出了這樣的:

stdClass Object 
(
    [first] => Bob 
    [last] => 
) 
stdClass Object 
(
    [first] => Jane 
    [last] => 
) 

我無法控制在遠程主機上運行的mysql版本,否則我會嘗試升級遠程主機。

回答

-1

您似乎在混合語法結果綁定的語法。我不使用的MySQLi多,而是閱讀manual,它看起來像你應該使用這樣的

mysqli_stmt_bind_result($stmt, $first, $last); 
    // avoiding the object properties here just to be safe 

while (mysqli_stmt_fetch($stmt)) { 
    $row = new stdclass; 
    $row->first = $first; 
    $row->last = $last; 
    $rows[] = $row; 
} 

mysqli_stmt_close($stmt); 
+0

你的建議的東西沒有解決不了的問題。 –

+0

@user必須是代碼之外的東西。仍然,這*是正確的方式做語句結果綁定 – Phil

+0

@ user522962感謝您的「接受」。這實際上是否真的解決了你的問題? – Phil