現在、私はここに2データベーステーブルから選択して40のコンテンツを制限する方法は?
chatroom_id | chat_id |
1 1
は私chatroom_chatとして、私はチャットなどのコンテンツ
テーブル名を2テーブルIDを選択して、ショーを制限したい3つのテーブル
id | user_id | chat | date
1 1 a 2016-05-29 12:02:58
テーブル名をあるきSQL文を使用したPHPコード
$chatroomID=$_GET['chatroomID'];
$userID = $_SESSION['id'];
$sql="SELECT * FROM chatroom_chat WHERE chatroom_id ='$chatroomID'";
$result1 = mysqli_query($connection, $sql) or die(mysqli_error($connection));
while ($row = mysqli_fetch_array($result1)) {
$chat = $row['chat_id'];
$sql3 ="SELECT * FROM (
SELECT * FROM chat,chatroom_chat WHERE id = '$chat' AND chat_id= '$chat' ORDER BY id DESC LIMIT 0,40
) sub
ORDER BY id ASC LMIT 0,40";
$getChatData = mysqli_query($connection,$sql3) or die(mysqli_error($connection));
$getUserID=mysqli_query($connection, "SELECT * FROM chat WHERE id = '$chat'") or die(mysqli_error($connection));
while($getUserIDRow=mysqli_fetch_array($getUserID)){
$postUserID=($getUserIDRow['user_id']);
}
$getUsername=mysqli_query($connection, "SELECT * FROM user WHERE id = '$postUserID'");
while($getUsernameRow=mysqli_fetch_array($getUsername)){
$postUsername=($getUsernameRow['username']);
}
while($row3 = mysqli_fetch_array($getChatData)) {
$color = ($row3['user_id'] == $userID) ? '#FFFFFF' : '#66FFFF';
$position = ($row3['user_id'] == $userID) ? 'right' : 'left';
$border = ($row3['user_id'] == $userID) ? ' 1px solid black ' : ' none ';
echo "<div class='msg-dateandtime' style='text-align:$position; float:$position;'> <div class='left-username' style='color:blue;'>" .$postUsername."</div>"
. "<div class='space'></div>"
. "<div class='right-date'> ". $row3['date'] ." </div></div>"
. "<div class='wrap-message' style='background-color:$color; border:$border; float:$position;'>"
. "<p style 'text-align=$position; margin:0; padding:0; text-align:left;'> ".$row3['chat']."</p></div>";
}
}
今すぐここにエラーが表示されることはありません。ちょうどチャットは40でショーを制限することはありません。
'ORDER BY id ASC'の隣に' LIMIT 40'を追加するとどうなりますか? –
エラー「あなたはSQL構文にエラーがあります。 MariaDBサーバーのバージョンに対応するマニュアルをチェックして正しい構文を確認し、 'LMIT 0,40'の4行目近くで使用してください。 – Chew
派生テーブルごとにエイリアスを使用していることを確認してください。たとえば、 'id'ではなく 'chat.id'の場合クエリの可読性も向上します – sabith