我目前正在学习PHP,做标准的CRUD工作。我正在尝试编写一个函数(query_entire_table),当我想查询表的所有行时,我总是可以使用它,试图让它保持干燥。
db.php中:
<?php
$db['db_host'] = 'localhost';
$db['db_user'] = 'root';
$db['db_pass'] = '';
$db['db_name'] = 'cms';
foreach($db as $key => $value){
define(strtoupper($key), $value);
}
$connection = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
function query_entire_table($tablename){
$query = "SELECT * FROM " . $tablename;
$select_all_entries = mysqli_query($connection, $query);
return mysqli_fetch_assoc($select_all_entries);
}
?>
当我调用该函数时,我收到以下错误: 致命错误:无法重新声明/ Applications / XAMPP / xamppfiles / htdocs / cms / includes / db中的query_entire_table()(先前在/Applications/XAMPP/xamppfiles/htdocs/cms/includes/db.php:13中声明)。第17行的PHP
这就是我调用函数的方式:
<?php
$posts_table = query_entire_table('posts');
while($posts_table){
//doing some stuff...
}
?>
此时我只包括并调用该函数一次,并且无法解决这里发生的事情。
答案 0 :(得分:4)
请仔细阅读错误消息:
无法重新声明query_entire_table()
与JavaScript等其他语言不同,PHP不允许重新声明函数或类:
C:\>php
<?php
function foo(){
}
function foo(){
}
^Z
PHP Fatal error: Cannot redeclare foo() (previously declared in -:3) in - on line 5
无论您将db.php
注入代码,都可能使用了错误的构造。尝试这样的事情:
require_once('/path/to/db.php');
请注意 _once 后缀。
答案 1 :(得分:1)
错误告诉您已在代码中的其他位置声明了query_entire_table函数。
这也可能意味着您不止一次地包含db.php。尝试使用include_once而不是常规包含。