【问题标题】:Warning: mysqli::query(): Empty query [closed]警告:mysqli::query():空查询[关闭]
【发布时间】:2023-03-27 07:32:01
【问题描述】:

对于我的应用程序,我正在创建一个成员可以订阅的组。使用函数 CreateGroup 我正在将数据写入数据库。使用 sql '$insert' 我正在将数据写入tblgroups。没关系

使用 sql '$insertmember' 我正在尝试将数据发送到 tblgroup_membergroup_idgroupmember_id 不会填满。

group_id 必须是最后创建的组的id_number。因此我使用的是 sql '$latest'。之后我正在做fetch_assoc 来获取号码。

但是我得到$latestresult 是未定义的错误mysqli::query 是空的?我做错了什么?

PHP

$user_id = $user -> getUserByEmail($email);

if(isset($_POST["btnCreateGroup"])){
        try {
        $group = new Group();

         $distance  = (isset($_POST["distance"]))  ? $_POST["distance"]  : '';
         $groupname = (isset($_POST["groupname"])) ? $_POST["groupname"] : '';
          $duration  = (isset($_POST["duration"])) ? $_POST["duration"]   : '';

        $group->GroupDistance = mysql_real_escape_string($distance);
        $group->GroupName = mysql_real_escape_string($groupname);
        $group->GroupDuration = mysql_real_escape_string($duration);
        $group->CreatorId = mysql_real_escape_string($user_id);
        $group->CreateGroup();
        //$group->SaveCreatoridToGroup();

        } catch(exception $e) {
        $feedback = $e -> getMessage();
    }

功能

public function CreateGroup()
    {

        $db = new Db();

        $insert = "INSERT INTO tblgroups (
                     group_name,
                     group_distance,
                     group_duration,
                     group_creator_id

                  ) VALUES (
                      '" . $db->conn->real_escape_string($this->m_sGroupName) . "',
                       '" . $db->conn->real_escape_string($this->m_iGroupDistance) . "',
                         '" . $db->conn->real_escape_string($this->m_iGroupDuration) . "',
                '" . $db->conn->real_escape_string($this->m_sCreatorId) . "'
                  )";

                  $db -> conn -> query($insert);


        $latest = "SELECT group_id FROM tblgroups ORDER BY group_id desc limit 1";
        $latestresult = $db->conn->query($latestresult);
        $fetch_latestresult = mysqli_fetch_assoc($latestresult);
        var_dump($latestresult);  

        $insertmember = "INSERT INTO tblgroup_member (
                            group_id,
                            groupmember_id

                            ) VALUES (
                            '" . $db->conn->real_escape_string($fetch_latestresult) . "',
                            '" . $db->conn->real_escape_string($this->m_sCreator_id) ."'
                            )";

                                      $db -> conn -> query($insertmember);
                                      throw new Exception("You created a group!");

    }

【问题讨论】:

  • 强制注释告诉你使用 PDO 而不是 mysqli。 php.net/manual/en/book.pdo.php 或者至少使用准备好的语句而不是转义字符串。 :)

标签: php mysql sql function mysqli


【解决方案1】:

你错了

$latest = "SELECT group_id FROM tblgroups ORDER BY group_id desc limit 1";
$latestresult = $db->conn->query($latestresult);

应该是

$latest = "SELECT group_id FROM tblgroups ORDER BY group_id desc limit 1";
$latestresult = $db->conn->query($latest);

【讨论】:

  • 现在他告诉我这个:警告:mysqli::real_escape_string() 期望参数 1 是字符串,数组中给出...当我执行 var_dump 时,他给出了正确的数字
  • 你需要传入一个字符串real_escape_string($fetch_latestresult['group_id'])
  • 它正在工作,但为什么我必须告诉我想要哪一列?我已经在查询中这样做了?
  • 因为mysqli_fetch_assoc会返回关联数组
猜你喜欢
  • 2019-01-09
  • 2014-08-14
  • 1970-01-01
  • 2017-02-28
  • 2019-07-06
  • 2018-05-31
  • 2020-02-07
  • 1970-01-01
  • 2010-09-06
相关资源
最近更新 更多