【问题标题】:mysql_list_tablesmysql_list_tables
【发布时间】:2011-06-08 18:14:19
【问题描述】:

我在 kohana 中有一个在 php 5.2.11 上运行良好的脚本。我使用 mysql_query 为 mysql_select_tables 取出一行。当我将它放在 php 5.3 服务器上时,出现以下错误:

警告信息

检测到阻止加载此页面的错误。如果此问题仍然存在,请联系网站管理员。 系统/库/驱动程序/数据库/Mysql.php [483]: mysql_data_seek() 期望参数 2 很长,给定字符串 堆栈跟踪

系统/库/驱动程序/数据库/Mysql.php [483]: mysql_data_seek( 资源 id #39, mysql_fetch_array ) 系统/库/驱动程序/Database.php [558]: mysql_Result->seek(mysql_fetch_array) 应用程序/视图/right_menu.php [33]: Database_Result->offsetGet(mysql_fetch_array) 系统/库/Controller.php [74]: 包括(应用程序/视图/right_menu.php)

我想知道这是关于 php 5.2 与 5.3 的单独问题,还是将 mysql_list_tables 替换为 mysql_query("SHOW TABLES...") 的结果?这似乎是一个名为 mysql_fetch_array 的字符串被发送到 mysql_data_seek 作为第二个参数而不是 long 的问题,尽管这在 5.2 中有效。谢谢。

【问题讨论】:

  • 它会立即告诉您 Mysql.php 中第 483 行的第二个参数不是应该的。解决这个问题,或者更好:检查最新版本的 kohana 是否没有解决这个问题。

标签: php kohana


【解决方案1】:

以下功能已在 5.3 中弃用,其他替代方法请参阅手册http://us2.php.net/manual/en/function.mysql-list-tables.php

根据 php 手册“此函数已弃用。最好使用 mysql_query() 来发出 SQL SHOW TABLES [FROM db_name] [LIKE 'pattern'] 语句

【讨论】:

  • 是的,我看到了。我改变了这个 $tables = mysql_list_tables($db);到行 $tables = mysql_query("SHOW TABLES FROM $db;");我在 PHP 5.2 中运行该更改并且它可以工作,而切换到 php 5.3 会引发错误。我注意到的一件事是这个错误 mysql_data_seek() 期望参数 2 很长,字符串给定了 mysql_data_seek 的堆栈跟踪(资源 id #39,mysql_fetch_array )。谢谢。
  • @steve:您在脚本中使用的 mysql_data_seek() 一定有问题。您可能向该函数传递了错误的值,请检查
  • "mysql_fetch_array" 作为第二个参数传递给 mysql_data_seek。令人惊讶的是,这在 php 5.2 中有效,但在 php 5.3 中死亡。我想知道是否有调试设置?作为一种解决方法,我只是手动将其设置为零。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多