php和mysql全文列不能很好地融合在一起

时间:2011-08-30 01:34:37

标签: php mysql

我有以下内容:

Localhost:php version 5.3.0 Remotehost:php版本5.2.17

实际的表托管在Remotehost上,运行mysql版本5.0.91

我有一个包含varchar 30和LONGTEXT列的表。当我直接通过phpmyadmin在其上运行SELECT语句时,这两个列在localhost和remotehost上都显示正常。

当我混入一些我自己的php时会发生奇怪的事情。我在PHP中运行相同的语句,它在localhost上运行正常。在remotehost上运行确切的php代码将返回varchar列,但返回LONGTEXT列的空白。

这是我的php代码:(“first”是varchar 30列,“last”是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($ rows)给出了这个:

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

我无法控制我在remotehost上运行的mysql版本,否则我会尝试升级remotehost。

1 个答案:

答案 0 :(得分:-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);