为什么我的SELECT查询失败

Bec*_*cky 1 php mysql select mysqli

我在试图弄清楚为什么$query2失败时遇到了问题.我一遍又一遍地看着这段代码,但无法弄清楚.

这是失败的代码行..

$query2 = mysqli_query($con,"SELECT * FROM forum_topics WHERE category-id='".$cid."' ORDER BY topic_reply_date DESC")
    or die ("Query2 failed: %s\n".($query2->error));
Run Code Online (Sandbox Code Playgroud)

有没有人看到我失踪的东西会导致失败?

$user = new User();
if(!$user->isLoggedIn()) {
    Redirect::to('index.php');
}
$logged = $user->isLoggedIn();
$con = mysqli_connect("localhost", "root", "", "db");
$cid = $_GET['cid'];
$userid = ( isset( $_SESSION['user'] ) ? $_SESSION['user'] : "" );

if(isset( $_SESSION['user'])) {
    $logged = " | <a href='forum_create_topic.php?cid=".$cid."'>Create a new topic</a>";
}
$query = mysqli_query($con,"SELECT * FROM forum_categories WHERE id='".$cid."' LIMIT 1");
$numrows = mysqli_num_rows($query);
if($numrows == 1){
    $query2 = mysqli_query($con,"SELECT * FROM forum_topics WHERE category-id='".$cid."' ORDER BY topic_reply_date DESC")
    or die ("Query2 failed: %s\n".($query2->error));
    $numrows2 = mysqli_num_rows($query2);
Run Code Online (Sandbox Code Playgroud)

Ale*_*tan 7

category-id 需要逃脱.

使用反引号`来转义列名,如下所示:`category-id`.即:

WHERE `category-id` ='".$cid."'
Run Code Online (Sandbox Code Playgroud)

MySQL正在将其视为" categoryMINUS id",认为你想要做数学.

你的SQL应该是这样的:

$query2 = mysqli_query($con,"SELECT * FROM forum_topics WHERE `category-id`='".$cid."' ORDER BY topic_reply_date DESC")
or die ("Query2 failed: %s\n".($query2->error));
Run Code Online (Sandbox Code Playgroud)