2017-08-29 57 views
-1

我需要在數組中存儲'following'列的值。但是,我無法弄清楚這段代碼有什麼問題。將數據從一個SQL查詢應用到另一個

session_start(); 
$connect = mysqli_connect("localhost", "root", "root", "user1"); 
$user = $_SESSION['username']; 

$result = mysql_query("SELECT * FROM Followers WHERE user='$user'"); 
$data = array(); 
while ($row = mysql_fetch_array($result)) { 
    $data[] = $row['following']; 
} 
+0

**注:** SQL注入始終是重要的,因爲你可以很容易地與有效的數據自己動手爲好。 **注2:**不要混合使用'mysql_ *'和'mysqli_ *'。 – jeroen

回答

0

它更容易使用法定的繼承權,這將是更爲有效:

Select * from message left join followers on followers.following=Messages.user where Follower.user=... 

HTH 問候

0

您的解決方案都會遇到的問題,如果你忘了逃跑caracters像「'」或「」「甚至」\「。

如果我是你,我會合併成子查詢這種方式:

$sql = "SELECT * FROM Messages WHERE user IN 
       (SELECT * FROM Followers WHERE user='$user')" 
$result = mysqli_query($connect, $sql); 

乾杯!

0

mysqli_fetch_array($result)

希望工程更換下面 mysql_fetch_array($result)

0

試試這個

session_start(); 
    $connect = new mysqli("localhost", "root", "root", "user1"); 
    $user = $_SESSION['username']; 

    $result = mysqli_query($connect,"SELECT * FROM Followers WHERE user='$user'"); 
    $data = array(); 
    while ($row = mysqli_fetch_array($result)) { 
     $data[] = $row['following']; 
    } 
0

正如有人指出,你應該使用prepared statement避免討厭的SQL注入。作爲正在使用的唯一領域是follower限制返回的列(使得它更容易使用下面的符號 - 尤其是bind_result

session_start(); 

$data = array(); 
$db = new mysqli("localhost", "root", "root", "user1"); 
$user = $_SESSION['username']; 

$sql='select `following` from `followers` where user=?'; 
$stmt=$db->prepare($sql); 
if($stmt){ 
    $stmt->bind_param('s',$user); 
    $res=$stmt->execute(); 

    if($res){ 
     $stmt->bind_result($follower); 
     while($stmt->fetch()){ 
      $data[]=$follower; 
     } 
     $stmt->free_result(); 
     $stmt->close(); 
    } 
} 
$db->close(); 
0

你必須在代碼中3個錯誤:
1.mysql_query()已被廢棄,可能給出錯誤,所以使用mysqli_query(),它需要2個參數連接和查詢。
2.您的查詢由於其字符串而沒有收到用戶變量值。
3.您的行不是您可以獲得以下值的關聯數組,因此請使用mysqli_fetch_assoc()代替。

您可以使用下面的代碼:

$connect = mysqli_connect("localhost", "root", "root", "user1"); 
$user = $_SESSION['username']; 

$result = mysqli_query($connect,"SELECT * FROM followers WHERE user='".$user."'"); 
$data = array(); 
while ($row = mysqli_fetch_assoc($result)) { 
    $data[]=$row['following']; 
} 
相關問題