I have the following:
Localhost: php version 5.3.0 Remotehost: php version 5.2.17
The actual table is hosted on Remotehost, which is running mysql version 5.0.91
I have a table with a varchar 30 and a LONGTEXT column. When I run a SELECT statement on it directly through phpmyadmin, the both columns display fine on both localhost and remotehost.
Strange things happen when I mix in a bit of my own php. I run the same statement in PHP and it works fine on localhost. Running the exact php code on remotehost will return the varchar column as it should be but return blank for the LONGTEXT column.
Here is my php code: ("first" is a varchar 30 column and "last" is a LONGTEXT column)
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 stdCl开发者_C百科ass();
mysqli_stmt_bind_result($stmt,$row->first,$row->last);
}
}
print_r($rows) gives this:
stdClass Object
(
[first] => Bob
[last] =>
)
stdClass Object
(
[first] => Jane
[last] =>
)
I have no control over the version of mysql I run on remotehost, otherwise I'd try to upgrade remotehost.
You seem to be mixing up your syntax for statement result binding. I don't use MySQLi much but from reading the manual, it looks like you should be using something like this
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);
精彩评论