【问题标题】:whats wrong with the function set_title() in my code [duplicate]我的代码中的函数 set_title() 有什么问题[重复]
【发布时间】:2019-05-21 08:34:35
【问题描述】:

我创建了一个名为set_title()的函数,用于在数据库中设置标题和描述我不知道我哪里错了

         function set_title($file,$title = "",$description = ""){
           $pathinfo = pathinfo($file);
           $file = $pathinfo['basename'];
           if ($title == "") {
           $title = ucfirst($pathinfo['filename']);
            }
            if ($description !== "") {
            $description = mb_substr($description, 0, 150);
            }
           $sql = "SELECT file, title ,description FROM title  WHERE file = '$file'";
           $con = new mysqli('localhost','root','','jbstore');
           $result = $con->query($sql);
           if($result->num_rows > 0){
             $data = $result->fetch_assoc();
               if($data['description'] == ""){
                 $sql = "INSERT INTO title (description) VALUES('$description')";
                 $con->query($sql);
               }
           }elseif ($result->num_rows == 0) {
             $sql = "INSERT INTO title (file,title,description) VALUES ('$file','$title',$description)";
             $result = $con->query($sql);
           }
         }

我希望它将数据插入数据库,但没有任何反应

【问题讨论】:

  • 你测试过那些IFs是否被执行了吗?
  • elseif 更改为else,也许$result->num_rows 返回一个NULL 值,这意味着您的代码有可能无法执行
  • 有错误吗? (如果不是,have you enabled error reporting?)您是否检查过代码中运行了哪些路径(例如通过记录特定文本?)如果是,您期望的路径是什么?如果没有,您是否检查过您在 if 语句中使用的值?
  • 你也应该真正使用准备好的语句。您很可能容易受到SQL-Injection 的攻击。请参阅How can I prevent SQL injection in PHP?
  • IFs 没有执行

标签: php mysql sql mysqli


【解决方案1】:

代码中的一些问题。

 $sql = "INSERT INTO title (file,title,description) VALUES ('$file','$title',$description)";

这里的 $description 将用作 INT val。

用quote('')添加$description

 $sql = "INSERT INTO title (file,title,description) VALUES ('$file','$title','$description')";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多