簡體   English   中英

我做了一個 php 文件,讓人們互相關注

[英]i made a php file that let people follow each other

我制作了這個 PHP 頁面,讓人們互相關注它從表 users 中獲取以下用戶 ID,當登錄用戶按下關注時,操作應保存在關注者表中。

followers table
    id  int
    user_id int
    follower-id int

users table
    email varchar
    id int
    username varchar
    password varchar

我收到此錯誤

:致命錯誤:未捕獲的異常“PDOException”,消息為“SQLSTATE[42S22]:未找到列:1054 C:\\socialnetwork\\classes\\DB.php:12 中的“字段列表”中的未知列“follower”:12 堆棧跟蹤:# 0 C:socialnetwork\\classes\\DB.php(12): PDOStatement->execute(Array) #1 C:\\Users\\Karim\\Desktop\\socialnetwork\\profile.php(17): DB::query('SELECT follower. ..', Array) #2 {main} 在第 12 行的 C:socialnetwork\\classes\\DB.php 中拋出

感謝您的時間。

<?php
include('./classes/DB.php');
include('./classes/Login.php');
$username = "";

if (isset($_GET['username'])) {
        if (DB::query('SELECT username FROM users WHERE username=:username', array(':username'=>$_GET['username']))) {
                $username = DB::query('SELECT username FROM users WHERE username=:username', array(':username'=>$_GET['username']))[0]['username'];
                if (isset($_POST['follow'])) {



                        $userid = DB::query('SELECT id FROM users WHERE username=:username', array(':username'=>$_GET['username']))[0]['id'];
                        $followerid = Login::isLoggedIn();


                        if (!DB::query('SELECT follower-id FROM `followers` WHERE user_id=:user_id', array(':user_id'=>$userid))) {
                                DB::query('INSERT INTO followers VALUES (null, :user_id, :follower-id)', array(':user_id'=>$userid, ':follower-id'=>(int)$followerid));
                        } else {
                                echo 'Already following!';
                        }
                }
        } else {
                die('User not found!');
        }
}
?>

<h1><?php echo $username; ?>'s Profile</h1>
<form action="profile.php?username=<?php echo $username; ?>" method="post">
        <input type="submit" name="follow" value="Follow">
</form>

即使不允許使用連字符,也可能會導致列名出現問題。

為了使其工作,您必須用反引號括起列的名稱:

SELECT `follower-id` FROM

正如 MySQL 文檔所確認的那樣:

不帶引號的標識符中允許的字符:

ASCII: [0-9,az,AZ$_](基本拉丁字母、數字 0-9、美元、下划線)

擴展:U+0080 .. U+FFFF

帶引號的標識符中允許的字符包括完整的 Unicode 基本多語言平面 (BMP),但 U+0000 除外:

ASCII: U+0001 .. U+007F

擴展:U+0080 .. U+FFFF

破折號的 ASCII 碼-是 45,在“帶引號的標識符”ASCII 范圍內

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM