2017-08-29 2 views
-1

Ich muss die Werte der Spalte "folgende" in einem Array speichern. Ich kann jedoch nicht herausfinden, was mit diesem Code nicht stimmt.Verwenden Sie Daten von einer SQL-Abfrage zu einer anderen

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

** Hinweis: ** SQL-Injection ist immer wichtig, wie Sie leicht mit gültigen Daten tun können, als auch sich selbst. ** Anmerkung 2: ** Mischen Sie nicht mysql_ * 'und mysqli_ *'. – jeroen

Antwort

0

Es ist einfacher, einen jointure zu verwenden, die wesentlich effizienter sein wird:

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

HTH Grüße

0

Ihre Lösung wird auf Probleme stoßen, wenn Sie vergessen caracters zu entkommen wie „'“ oder "" oder sogar "\".

Wenn ich Sie wäre, würde ich auf diese Weise in eine Unterabfrage verschmelzen:

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

Prost!

0

die unter Ersetzen mysql_fetch_array($result) mit mysqli_fetch_array($result)

Hoffe, es funktioniert!

0

versuchen diese

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

Wie wurde darauf hingewiesen, sollten Sie ein prepared statement verwenden fiese SQL-Injection zu vermeiden. Da das einzige Feld, das verwendet wird, um follower Grenze ist die Spalten zurückgegeben (macht es einfacher, unter Notation - insbesondere 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

Sie haben 3 Fehler im Code:
1.mysql_query() ist veraltet und kann Geben Sie einen Fehler ein, verwenden Sie also mysqli_query(), das 2 Parameter Verbindung und Abfrage erwartet.
2. Ihre Abfrage erhält keine Benutzervariablen, da es sich um eine Zeichenfolge handelt.
3. Ihre Zeile ist kein assoziatives Array, für das Sie den folgenden Wert erhalten können. Verwenden Sie stattdessen mysqli_fetch_assoc().

können Sie den folgenden Code verwenden:

$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']; 
} 
Verwandte Themen