SQL查询未在php中运行,可能是与SQL相关的问题


Sql query not running in php and maybe an issue related to sql

函数运行正常,我插入数据的其他查询也运行良好,下面评论。
这是我收到的错误"错误:从product_attribute中选择最大值(product_id) "

  public function add_tbl1($attribute_id , $attribute_description){
    $con=$this->con;
    $id = mysqli_real_escape_string($con, $attribute_id);
    $description = mysqli_real_escape_string($con, $attribute_description);
    $sql2="SELECT MAX(product_id) FROM product_attribute ";
    $no=0;

    if ($con->query($sql2) === TRUE) {
        $no= $con->query($sql2);
        $no=$no+1;
        echo $no;

    } else {
        echo "Error: " . $sql2 . "<br>" . $con->error;
    }   
    /*$sql = "INSERT INTO product_attribute ( attribute_id, attribute_description)
    VALUES ( '$id', '$description')";
    if ($con->query($sql) === TRUE) {
        echo "New record created successfully";
    } else {
        echo "Error: " . $sql . "<br>" . $con->error;
    }   */
    }

如果$con是mysqli连接,那么带有SELECT的$con->query将永远不会返回true。它将返回 false 或资源。

你应该检查一下

 $con->query($sql2) !== false))

从 http://php.net/manual/en/mysqli.query.php

失败时返回 FALSE。成功选择、显示、描述或 EXPLAIN 查询 mysqli_query() 将返回一个mysqli_result对象。为 其他成功的查询 mysqli_query() 将返回 TRUE。

$con->query($sql2) === TRUE

mysqli::query 不会返回SELECT语句成功时的TRUE。它返回

对于成功的选择、显示、描述或解释查询,mysqli_query() 将返回一个mysqli_result对象

因此,请相应地更改您的 if 条件。

$sql2="SELECT MAX(product_id) as id FROM product_attribute ";
if ($result = $con->query($sql2)) {
    $row = $result->fetch_assoc();
    $id  = $row["id"];
}