PHP-在表中插入外键时出现错误mysqli_num_rows()要求参数1为mysqli_result,第22行给出布尔值

PHP-在表中插入外键时出现错误mysqli_num_rows()要求参数1为mysqli_result,第22行给出布尔值,php,mysql,Php,Mysql,我在表中插入外键约束时出错。 我是php新手,不知道如何继续。 这是我的php代码 <?PHP include_once('connection.php'); /** * created by chandu on 24-03-2018 12:20 pm */ $con=mysqli_connect($server_name,$user_name,$password,$db); if(!$con){ die("Er

我在表中插入外键约束时出错。 我是php新手,不知道如何继续。 这是我的php代码

     <?PHP

    include_once('connection.php');
    /**
     * created by chandu on 24-03-2018 12:20 pm
     */
    $con=mysqli_connect($server_name,$user_name,$password,$db);

    if(!$con){
      die("Error Connection");
    }
     if(isset($_POST["workOrderName"]) && isset($_POST["submitted_on"]) && isset($_POST["status"]) && isset($_POST["subject"]) && isset($_POST["notes"])) {

       echo "**************************************";
       $status = $_POST["status"];
       $subject = $_POST["subject"];
       $notes = $_POST["notes"];
       $result = mysqli_query($con,"insert into ticket_raising(word_order_id,submitted_on,status,subject,notes) values('select word_order_id from workorder_category where workorder_name = 'workOrderName'',NOW(),'$status','$subject','$notes')");
       $isInserted = mysqli_num_rows($result);
       if ($isInserted>0) {
           # code...
           echo "Success";
       }
       else {
           echo "unsuccess";
       }
     }
     mysqli_close($con);
    ?>
如果您纠正了当前导致无效查询的引用问题,则select将作为字符串插入,而不是作为SQL查询执行。若要使用,应将所有值放入选择框中。您还应该参数化查询。将值传递到SQL查询将打开>a href=https://en.wikipedia.org/wiki/SQL_injection>SQL注入。所以您的查询应该是这样的:

insert into ticket_raising(word_order_id,submitted_on,status,subject,notes) 
select word_order_id, NOW(), ?, ?, ? from workorder_category where workorder_name = ?
然后绑定您拥有的值、$status、$subject、$notes和workOrderName

您可以在此处阅读有关使用mysqli准备的语句的更多信息:


您可以对表结构进行的一个可能的添加是将submitted\u on的默认值设置为当前的\u时间戳,这样您就不需要立即使用了。

我认为子查询返回了许多不适用于该列的记录。试着这样做

$result = mysqli_query($con,"insert into ticket_raising(word_order_id,submitted_on,status,subject,notes) values('select word_order_id from workorder_category where workorder_name = 'workOrderName' limit 1',NOW(),'$status','$subject','$notes')");

我还注意到,您以错误的方式进行连接,请尝试使用连接运算符来防止错误

mysqli_错误怎么说?不要引用select,用逗号将其他值添加到它。看见您还可以接受SQL注入。还应该使用SQL插入语句语法$结果将为FALSE—布尔值,而不是结果集。此外,将告诉您不要在SQL语句的文本中包含潜在的不安全值@克里斯85-他所说的只是为了详细地插入。。。值的选择。。其中workorder_name='workOrderName,现在。。。因此,您必须删除'select and the last one here'workOrderName处的单引号。这会导致一些引号{block}问题,这可能会导致语法错误/警告。。在任何情况下,这都会使$result变为布尔值false,从而导致您看到的错误。