2017-09-13 85 views
-1

给予当我运行下面的查询mysqli_query()预计参数1是mysqli的,数组中

$sql ="SELECT * FROM user_info JOIN Notifications ON user_info.user_info_id =Notifications.Sender_id AND Notifications.STATE=0 LIMIT 1"; 
$query=mysqli_query($con,$sql); 
$num_rows=mysqli_num_rows($query); 
$message='' 

if($num_rows > 0){ 
    $con=mysqli_fetch_assoc($query); 
    switch ($con['Notification_Type']){ 
     case'events': 
      $var="Notifications".$con['user_info_id']; 
      $sql_shown="SELECT *FROMevent WHERE event.notification_shown = 0 AND event.user_info_id='$var'LIMIT 1"; 
      $query_vi=mysqli_query($con,$sql_shown); 
      $num_rows_vi=mysqli_num_rows($query_vi); 
      $message.=$con['Sender_id']."has created a Event"; 
      echo $message; 
     break; 
    } 
} 

我收到以下错误:

mysqli_query() expects parameter 1 to be mysqli, array given in

这是我的用户表:

CREATE TABLE IF NOT EXISTS user_info(
    user_info_id INT(11) NOT NULL AUTO_INCREMENT, 
    u_first_name VARCHAR(255) NOT NULL, 
    u_last_name VARCHAR(255) NOT NULL, 
    u_email VARCHAR(255) NOT NULL, 
    u_mobile VARCHAR(255) NOT NULL, 
    role ENUM('1yearM','1yearN','1yearR','1yearU','1yearS','2M','2R','2N','2U','2S','3M','3R','3N','3U','3S','4M','4R','4N','4U','4S','professor','librarian','admission_department') NOT NULL, 
    password VARCHAR(255) NOT NULL, 
    u_ip VARCHAR(255) NOT NULL, 
    signup_date DATETIME NOT NULL, 
    last_login DATETIME NOT NULL, 
    act_code VARCHAR(255) NOT NULL, 
    activation enum('1','0') NOT NULL DEFAULT '0', 
    PRIMARY KEY (user_info_id), 
    UNIQUE KEY (u_email,u_mobile) 
) 

这是我的事件表:

CREATE TABLE IF NOT EXISTS Event(
    Event_id INT(11) NOT NULL AUTO_INCREMENT, 
    Event_Name VARCHAR(255) NOT NULL, 
    Event_location VARCHAR(255) NOT NULL, 
    Event_Organizer VARCHAR(255) NOT NULL,  
    Event_Date_Posted DATETIME NOT NULL, 
    Event_Starting_timings DATETIME NOT NULL, 
    Event_Ending_timings DATETIME NOT NULL, 
    Event_Day VARCHAR(255) NOT NULL, 
    Event_Description text NOT NULL, 
    Event_file_name VARCHAR(255) NOT NULL, 
    Event_file_path VARCHAR(255) NOT NULL, 
    Event_file_size VARCHAR(255) NOT NULL, 
    user_info_id INT(11) NOT NULL, 
    notification_shown ENUM('1','0') NOT NULL DEFAULT '0', 
    PRIMARY KEY (Event_id), 
    FOREIGN KEY (user_info_id) REFERENCES user_info(user_info_id)  
) 

这是我的通知表:

CREATE TABLE IF NOT EXISTS Notifications(
    Notifications_id INT(11) NOT NULL AUTO_INCREMENT, 
    Notification_Type VARCHAR(255) NOT NULL, 
    Notification_Content VARCHAR(255) NOT NULL, 
    Notification_Created_Date DATETIME NOT NULL, 
    Notification_State ENUM('read','unread') NOT NULL DEFAULT 'unread', 
    Is_Notification_Delete ENUM('1','0') NOT NULL DEFAULT '0', 
    Notification_Deleted_Date DATETIME NOT NULL, 
    Sender_id INT(11) NOT NULL, 
    STATE ENUM('1','0') NOT NULL DEFAULT '0', 
    Recipient_id INT(11) NOT NULL, 
    PRIMARY KEY (Notifications_id) 
) 

回答

0

检查您$con它被用正确的方法mysqli_connect('')创建。

1

你覆盖你$con变量这一行:

$con=mysqli_fetch_assoc($query); 

该行之前,您$con变量是一个有效的MySQLi连接句柄。在那行之后它不是一个数组。因此,你的mysqli_query()调用抱怨说,第一个参数不再是mysqli连接/对象/句柄,而是现在是一个数组(它不应该)。

与库MySQLi连接/对象更改$con=mysqli_fetch_assoc($query);所以它不会覆盖$con变量/处理,而是写的结果不同的变量(也许$userinfo?)。

相关问题