2017-05-06 106 views
0

因此,我無法將數據導入此表。我有一個類似的會員表設置。如果我更改插入查詢加入成員的一切都完美,但只要我改變表加入它停止工作。該表似乎是正確的設置,因爲它基本上與我的會員表相同,但由於某些原因數據不會被插入。我想不出有什麼可能導致我的問題,所以我來找專家。插入命令失敗

請注意,當進入不同的表格時,此代碼完全可以正常工作。提前致謝。

if (isset($_POST['btn-join'])) { 

    // clean user inputs to prevent sql injections 
    $groupID = trim($_POST['groupID']); 
    $groupID = strip_tags($groupID); 
    $groupID = htmlspecialchars($groupID);  

    $teamname = trim($_POST['teamname']); 
    $teamname = strip_tags($teamname); 
    $teamname = htmlspecialchars($teamname); 

    // Query groups to set group name 
    $query2 = "SELECT groupName FROM groups WHERE groupID='$groupID'"; 
    $result2 = mysqli_query($con,$query2); 
    $groupquery = mysqli_fetch_array($result2,MYSQLI_ASSOC); 
    $groupname = $groupquery['groupName']; 

    // groupID validation 
    if (empty($groupID)) { 
     $error = true; 
     $groupIDError = "Please enter valid Group ID."; 
    } else { 
     // check email exist or not 
     $query3 = "SELECT groupID FROM groups WHERE groupID='$groupID'"; 
     $result3 = mysqli_query($con,$query3); 
     $count = mysqli_num_rows($result3); 
     if($count!=1){ 
      $error = true; 
      $groupIDError = "Provided Group does not exist."; 
     } 
    } 

    // basic teamname validation 
    if (empty($teamname)) { 
     $error = true; 
     $nameError = "Please enter your Team Name."; 
    } else if (strlen($teamname) < 3) { 
     $error = true; 
     $nameError = "Team Name must have at least 3 characters."; 
    } 

    // if there's no error, continue to signup 
    if(!$error) { 

     $query = "INSERT INTO join(groupID,userID,groupName,teamName) VALUES('$groupID','$userID','$groupname','$teamname')"; 
     $membership = mysqli_query($con,$query); 

     if ($membership) { 
      $errTyp = "success"; 
      $errMSG = "Account successfully updated"; 
      header("Location: dashboard.php"); 

     } else { 
      $errTyp = "danger"; 
      $errMSG = "Something went wrong, try again later..."; 
     } 
    } 
} 

SQL:

CREATE TABLE IF NOT EXISTS `join` (
    `jID` int(11) NOT NULL AUTO_INCREMENT, 
    `groupID` varchar(32) NOT NULL, 
    `userID` varchar(32) NOT NULL, 
    `groupName` varchar(35) NOT NULL, 
    `teamName` varchar(32) NOT NULL, 
    `joinDate` datetime DEFAULT CURRENT_TIMESTAMP, 
    PRIMARY KEY (`jID`), 
    UNIQUE KEY `groupID` (`groupID`,`userID`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1; 
+0

join是sql關鍵字 – julekgwa

+0

這是SQL Server還是MySQL?它不能兼而有之。 – alroc

+0

查詢中的'mysqli_error($ con)'已經清楚地顯示出你在'join'附近使用的正確語法,並且很可能避免了這個問題。 –

回答

3

join是SQL的保留字。爲了避免此類問題,周圍使用表和列名反引號:

$query = "INSERT INTO `join`(`groupID`,`userID`,`groupName`,`teamName`) VALUES('$groupID','$userID','$groupname','$teamname')"; 
$membership = mysqli_query($con,$query); 

作爲一個側面說明,你應該真的重寫此查詢使用準備好的語句,然後將變量綁定到它。這是一個等待發生的SQL注入。

+0

修好了,我得等上9分鐘才能接受你的回答。我也知道準備好的陳述,我打算以這種方式重寫所有這些陳述,但是我只是在制定這個基本框架,我也是一個新手,所以這樣做會讓我知道所有的小事情上來。我感謝您的幫助。 – Andrew

+0

@Andrew檢查這個職位https://www.w3schools.com/php/php_mysql_connect.asp – julekgwa

+0

@julekgwa我實際上使用該帖子將我的代碼轉換爲MySQLi。你是否建議我使用PDO? – Andrew