请检查MySQL查询

Har*_*had 0 php sql

我正在尝试使用MySQLi Query获取数据.请检查我的SQL查询,我在If条件上收到错误.我添加旁边的错误

如果条件

当它显示到控制台时

<?php
    $id = $_GET['id'];
    include("../include/connection_string.php");


    $sql = mysqli_query($db, "SELECT pages, main_id FROM dhms_index_table where main_id='"+$id+"'");

    if(mysqli_num_rows($sql)){ // Showing error here " Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result"
        $data = array();
        while($row = mysqli_fetch_array($sql)){
            $data[] = array(
                'pages' => $row['pages'],
                'main_ID' => $row['main_id']
            );
        }
        header('Content-type: application/json');
        echo json_encode($data);
    }
    ?>
Run Code Online (Sandbox Code Playgroud)

connections_string.php

$server = 'localhost'; 
$username ="root"; 
$passwd =''; 
$Dbase = 'og_dhms'; 
$db = @mysqli_connect($server,$username,$passwd) 
        or die("Could not connect database"); 
@mysqli_select_db($db, $Dbase) 
        or die("Could not select database");
Run Code Online (Sandbox Code Playgroud)

Fun*_*ner 5

这条线

main_id='"+$id+"'
Run Code Online (Sandbox Code Playgroud)

使用+符号而不是点来连接.这是JS/C方法.也许你是来自那种类型的背景,并认为你可以在PHP中使用它; 你不能.

所以...

main_id='".$id."'
Run Code Online (Sandbox Code Playgroud)

还要确保你有值$id = $_GET['id'];.

错误报告将告诉您它是否是.

如果GET数组是一个整数(我很确定它是),你最好用(int)它.

$id = (int)$_GET['id'];
Run Code Online (Sandbox Code Playgroud)

并检查它是否已设置/不为空.

即:

if(isset($_GET['id'])){

    $id = (int)$_GET['id'];

}
Run Code Online (Sandbox Code Playgroud)

要么

if(!empty($_GET['id'])){

    $id = (int)$_GET['id'];

}
Run Code Online (Sandbox Code Playgroud)