php - 无法检查数据库中是否存在数据

标签 php mysql

我知道我最近发布了很多问题,但是这个问题我大约 1 周都无法解决,我尝试了一百万次来检查数据是否存在,但仍然一无所获。搜索,检查同样的问题,但没有得到提示。所以请告诉我这里出了什么问题。我自己尝试一切,但如果遇到问题我暂时无法解决。我在这里寻求帮助。

<!DOCTYPE html>
<html>
<head>
    <title>Test Title</title>
</head>
<body>
    <?php 
        class Database{
            public $db;

            public function __construct($host,$username,$password,$dbname){

                $this->db=new MySQLi($host,$username,$password,$dbname);

            }
            public function getData(){
                $query="SELECT * FROM artisan";
                $result=$this->db->query($query); 
                $users=array();
                if($result->num_rows>0){
                    while($row=$result->fetch_assoc()){
                    $users[]=array(
                        "id"=>$row['id'],
                        "username"=>$row['username'],
                        "email"=>$row['email']
                        );

                    }
                }else{
                    echo "No results found!";
                }
                return $users;
            }
            public function getContent(){
                $query="SELECT * FROM content";
                $result=$this->db->query($query);
                $values=array();
                if($result->num_rows>0){
                    while($row=$result->fetch_assoc()){
                    $values[]=array(
                        "title"=>$row['title'],
                        "body"=>$row['body']
                    );
                }

            }
            return $values;
            }

        public function insertData(){
            $title=$_POST['title'];
            $query="INSERT INTO content(title,body) VALUES (?,?)";
            $result=$this->db->query("SELECT COUNT(*) FROM content WHERE title=$title");
            $stmt=$this->db->prepare($query);
            $stmt->bind_param("ss",$_POST['title'],$_POST['body']);
            if(!empty($_POST['title']) || !empty($_POST['body'])){
            if($result->num_rows){
            echo "User allready exists";
            }else{
                    $stmt->execute();
            }
        }
        }

        private function validate(){
            $query="SELECT title and body FROM contents";
            $result=$this->db->query($query);
            if($result){
                echo "hi";
            }
        }
    }

        $database=new Database('localhost','root','','test');
        $users=$database->getData();
        $values=$database->getContent();
        $database->insertData();
     ?>

     <style type="text/css">
        .container{
            text-align:center;
        }
        table, th, td, {
            border: 1px solid black;
        }
        table{
            width:100%;
        }
        .content{
            border:1px solid black;
        }
     </style>
     <div class="container">
      <?php
        for($i=0;$i<count($values);$i++):
       ?>
    <div class="content">
        <?php echo $values[$i]["title"]."<br>"; ?>
        <?php echo $values[$i]["body"]."<br>";?>
     </div>
    <?php endfor;?>
     </div>
     <table>
  <colgroup>
    <col span="2" style="background-color:red">
    <col style="background-color:yellow">
  </colgroup>
  <tr>
    <th>ID</th>
    <th>username</th>
    <th>email</th>
  </tr>
  <tr>
    <td><?php foreach($users as $user)
    echo $user['id']."<br>";
    ?></td>
    <td><?php foreach($users as $user)
    echo $user['username']."<br>";
    ?></td>
    <td><?php foreach($users as $user)
    echo $user['email']."<br>";
    ?></td>
  </tr>
</table>
<form action="index.php" method="POST">
    <input type="text" name="title">
    <input type="text" name="body">
    <input type="submit" name="submit">
</form>
</body>
</html>

最佳答案

"$result=$this->db->query("SELECT title FROM content WHERE title='$title'"); just changed everything to this and it worked,$result was returning false,so i tried to solve it but i guess adding ' ' to $title solved idk why. – DummyTarget 12 mins ago"

那是因为 $titlestring literal并且需要引用它。不过,您确实应该对所有事情使用准备好的语句,这将有助于防止潜在的 SQL 注入(inject)。

引用:

调试:

关于php - 无法检查数据库中是否存在数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47703916/

相关文章:

php - 使用 php 将文本链接到数据库中的行

php - 除了官方常见问题解答中列出的问题外,Windows 服务器上生产的 XAMPP 是否还有其他安全/性能问题?

mysql - 如何将具有相同值的行组合为一组?

php - mysqli 计算具有特定值的行

PHP/MySQL : check if variable is empty

php - foreach 循环中的 while 循环不正确循环

java - play scala 中 Magic 的 ColumnNotFound 问题

php - 获取 PHP 的 SQLite 查询结果

php - php插入mysql时出错

php - 具有相同 slug 的自定义帖子重定向到具有相同 slug 的错误帖子