我有以下内容:
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。
答案 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);