如何使用mysql_free_result()?

时间:2011-06-30 06:48:55

标签: php mysql

  

可能重复:
  Warning: mysql_fetch_* expects parameter 1 to be resource, boolean given error

我正在编写一个php脚本,它会生成大量的mysql查询

所以我认为使用mysql_free_result($ result)

会很好

但我继续得到这个错误,我不知道如何修复它,并且在php手册网站上他们说这可能会增加内存使用量是真的吗?

我正在创建的脚本就像一个mysql复制脚本,它将数据从一个数据库复制到另一个数据库。

  

警告:mysql_free_result()期望   参数1是资源,布尔值   给定的   C:\ Users \用户NESH \ nocxacutalscript \ XAMPP \ htdocs中\主\进口\ import.php   在第81行

3 个答案:

答案 0 :(得分:3)

通常,您有一个连接变量,一个包含返回查询的资源的变量,然后是结果中的各个行。从查询

对资源的变量调用mysql_free_result

例如

$dbcon=mysql_connect...
$res=mysql_query.
while ($row=mysql_fetch...)
{}
mysql_free_result($res)
mysql_close($db)

答案 1 :(得分:2)

什么是 $ result ?看来你实际上并没有提供带有先前收集的mysql结果的 mysql_free_result()函数。发布更多代码,我们很可能能够为您找出问题所在。

您从 mysql_query()调用获得的结果是您应该在 mysql_free_result()上执行的操作。

来自php.net的示例代码

<?php
// This could be supplied by a user, for example
$firstname = 'fred';
$lastname  = 'fox';

// Formulate Query
// This is the best way to perform an SQL query
// For more examples, see mysql_real_escape_string()
$query = sprintf("SELECT firstname, lastname, address, age FROM friends WHERE firstname='%s' AND lastname='%s'",
    mysql_real_escape_string($firstname),
    mysql_real_escape_string($lastname));

// Perform Query
$result = mysql_query($query);

// Check result
// This shows the actual query sent to MySQL, and the error. Useful for debugging.
if (!$result) {
    $message  = 'Invalid query: ' . mysql_error() . "\n";
    $message .= 'Whole query: ' . $query;
    die($message);
}

// Use result
// Attempting to print $result won't allow access to information in the resource
// One of the mysql result functions must be used
// See also mysql_result(), mysql_fetch_array(), mysql_fetch_row(), etc.
while ($row = mysql_fetch_assoc($result)) {
    echo $row['firstname'];
    echo $row['lastname'];
    echo $row['address'];
    echo $row['age'];
}

// Free the resources associated with the result set
// This is done automatically at the end of the script
mysql_free_result($result);
?>

答案 2 :(得分:2)

  

..是资源,布尔值在..

中给出

这意味着$ result包含一个可能为0的布尔值,这意味着您的SQL语句中存在一些错误,并且没有返回结果集