可能重复:
PHP warning help?
我正在尝试从数据库中连接三个表以显示用户选择的类别,但是我收到以下错误。
Warning: mysqli_error() expects exactly 1 parameter, 0 given in
当我查询我的数据库时,我认为我做错了。
以下是代码。
// Query member data from the database and ready it for display
$mysqli = new mysqli("localhost", "root", "", "sitename");
$dbc = mysqli_query($mysqli,"SELECT users.*, categories.*, users_categories.* FROM users_categories INNER JOIN users_categories ON users_categories.user_id = users.user_id JOIN categories ON users_categories.user_id = users.user_id WHERE users_categories.user_id=3");
if (!$dbc) {
// There was an error...do something about it here...
print mysqli_error();
}
//Users entered category loop
while ($row = mysqli_fetch_assoc($dbc)) {
if (! empty($row['category'])) {
echo '<div class="skill-info">';
echo '<p>' , htmlspecialchars($row['category']) , '</p>';
}
}
这是我的MySQL表格结构。
CREATE TABLE users (
user_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
user_name VARCHAR(255) NOT NULL,
PRIMARY KEY (user_id)
);
CREATE TABLE categories (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
parent_id INT UNSIGNED NOT NULL DEFAULT 0,
category VARCHAR(255) NOT NULL,
url VARCHAR(255) NOT NULL,
PRIMARY KEY (id),
INDEX parent (parent_id)
);
CREATE TABLE users_categories (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
user_id INT UNSIGNED NOT NULL,
category_id INT UNSIGNED NOT NULL,
PRIMARY KEY (id)
);
现在我收到以下错误
Not unique table/alias: 'users_categories'
我该如何解决这个问题?
感谢大家的帮助。有没有办法可以奖励每一个人在stackoverflow而不是一个人的帮助?
答案 0 :(得分:4)
您忘记将所需参数传递给mysqli_error()。变化
print mysqli_error();
到
print mysqli_error($mysqli);
进行更正后,您将能够看到错误消息并进一步调试。
仅供参考:看起来你很奇怪混合使用mysqli的OO和程序风格。你应该坚持使用其中一种。
答案 1 :(得分:2)
您应该使用参数:
来调用mysqli_error
if (!$dbc) {
print mysqli_error($mysqli);
}
<强>编辑:强>
您加入两个名称相同的表格。我认为在FROM
你犯了错字。不应该是FROM users
吗?表users
出现在列列表中,但您没有在FROM或JOIN中的任何位置。
SELECT users.*, categories.*, users_categories.*
FROM users
INNER JOIN users_categories ON users_categories.user_id = users.user_id
JOIN categories ON users_categories.user_id = users.user_id
WHERE users_categories.user_id=3
答案 2 :(得分:1)
关于如何修复mysqli_error行有很多意见,但SQL本身存在两个问题:
users_categories
表两次,而不是加入users
表。这应该更好:
SELECT users.*, categories.*, users_categories.*
FROM users_categories
INNER JOIN users ON users_categories.user_id = users.user_id
INNER JOIN categories ON users_categories.category_id = categories.id
WHERE users_categories.user_id=3
答案 3 :(得分:0)
mysqli_error
需要一个链接,请尝试:
print mysqli_error($mysqli);
答案 4 :(得分:0)
查询是问题所在。首先在PhpMyAdmin或您拥有的任何mySQL客户端中测试查询,您会发现它不起作用。