【发布时间】:2010-08-23 09:36:52
【问题描述】:
一定是星期一,天气太热了,不然我就傻了(可能是后者),但对于我来说,我无法让一个简单的 php 函数工作。
我有一个简单的查询
$sql = mysql_query("SELECT * FROM table WHERE field_name = '$input'");
我想通过一个函数运行:说:
function functionname($input){
global $field1;
global $field2;
$sql = mysql_query("SELECT * FROM table WHERE field_name = '$input'");
while($row = mysql_fetch_array($sql)) :
$field1[] = $row['field1'];
$field2[] = $row['field2'];
endwhile;
mysql_free_result($sql);
}
这样我就可以在许多地方使用不同的“输入”调用该函数。然后使用 foreach 循环遍历结果。
第一次调用该函数时运行良好,但之后总是出错。
正如所说的“一定是星期一,天气太热了,不然我就傻了(可能是后者)”。
请提出建议,因为我真的只想调用 1 个函数,而不是每次都重写查询。
这是错误信息
Fatal error: [] operator not supported for strings in C:\xampp\htdocs\functions.php on line 270
【问题讨论】:
-
如果您发布错误消息的文本会很有帮助。
-
尝试将 var_dump() 函数调用添加到函数末尾,看看全局变量会发生什么。
-
第 270 行是哪一行代码?您很可能在调用之间使用 $field1 和/或 $field2 将它们从数组更改为另一种数据类型。在这里使用全局变量不是一个好主意,为什么不简单地在你的函数中初始化一个数组,用数据库数据填充它,然后返回数组
-
避免使用全局变量,它们有许多讨厌的怪癖,例如您可以在此处看到:$field1 或 $field2 不是数组(它是一个字符串 somewhere;因为它是一个全局的,祝你好运找出确切的位置),并且尝试将它用作数组会给你错误。
-
另外,当 $input = "Mr. O'Hara" 时会发生什么?清理你的 mysql 代码,或者更好的是,使用带有参数化查询的 mysqli。