我已经在我的Windows中编写了这个PHP并且工作正常,但是在Linux上它会失去价值。
$stmt = mysqli_prepare($con,"SELECT name from `table` where ID=?");
mysqli_stmt_bind_param($stmt,"i",$id);
mysqli_stmt_execute($stmt);
mysqli_stmt_bind_result($stmt, $name);
mysqli_stmt_fetch($stmt);
mysqli_stmt_close($stmt);
if (is_null($name))
echo 'Empty';
在Linux上,它总是显示为空,但如果我将代码更改为
...
mysqli_stmt_fetch($stmt);
if (is_null($name))
echo 'Empty';
mysqli_stmt_close($stmt);
然后它不会显示EMPTY
我已经使用$ id和表中存在的值。
在
上测试PHP 5.2 Suse Linux
我在XP上使用PHP 5.3.3
答案 0 :(得分:1)
听起来这只是PHP处理内存的另一种方式。这很像在C ++中使用悬空指针。
PHP手册内容如下:
关闭准备好的声明。 mysqli_stmt_close()也释放语句句柄。如果当前语句具有挂起或未读结果,则此函数将取消它们,以便可以执行下一个查询。
在检索完所有结果(或将值传输到另一个变量)后,应始终调用“mysqli_stmt_close()”。
听起来Linux在释放时正在写入内存位置,而Windows保留旧值直到需要内存。