Mysqli_error çağrılırken Uyarı () [yinelenen]

5 Cevap php

Possible Duplicate:
PHP warning help?

Ben sipariş kategoriler seçilen kullanıcılara gösterilecek bir veritabanından üç tabloları katılmaya çalışıyorum ama aşağıdaki hatayı alıyorum.

Warning: mysqli_error() expects exactly 1 parameter, 0 given in

Benim veritabanını sorgulamak zaman ben yanlış bir şey yapıyorum düşünüyorum.

Aşağıda kodudur.

// 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>';
            }

    }

İşte benim MySQL tablo yapıdır.

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)
);

Şimdi aşağıdaki hatayı alıyorum

Not unique table/alias: 'users_categories'

Bunu nasıl düzeltebilirim?

Teşekkürler yardım için herkes. Bir kişi yerine stackoverflow burada yardımcı olmak için ben her bir ödül için bir yolu var mı?

5 Cevap

Sen mysqli_error() için gerekli bir argüman geçmek unuttum. Değişim

print mysqli_error();

karşı

print mysqli_error($mysqli);

Once you make the correction, you'll be able karşı see the error message and debug further.

FYI: It looks like you're oddly mixing the OO and procedural style usage of mysqli. You should stick karşı either one or the other.

Sen mysqli_error parametre ile aramak gerekir:

if (!$dbc) {
    print mysqli_error($mysqli);
}

EDITED:

Sen aynı adları taşıyan iki masaya katılmak. I FROM Eğer Yazım hatası yapılmadı bence. Olmamalı FROM users? Tablo users sütun listesinde görünür ancak DAN her yerde o var ya Joın yok.

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

Mysqli_error hattı düzeltmek için nasıl yorumların çok sayıda bulunmaktadır, ancak SQL kendisi ile iki sorun vardır:

  1. Sen de tüm users masaya katılmak ve iki kez değil users_categories tablo katılıyor.
  2. İkinci AÇIK ilk aynıdır, bu yüzden yanlış tablolarda yanlış sütunları başvuruyor.

Bu daha iyi çalışması gerekir:

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

Sorgu sorundur. PhpMyAdmin ilk sorgu veya ne olursa olsun mySQL istemcisi emrinde var ve çalışmıyor görürsünüz sınayın.