2016-04-14 21 views
-1

getiriliyor: Bu kod tüm kimlikleri seçmek ve bir dizideki geri onları bana gerekiyorduPHP 7 | MySQLi Sorgu Bu kodu vardır sadece getirilirken bir giriş

$conn = mysqli_connect($sql_servername, $sql_username, $sql_password, $sql_dbname); 

$bets = mysqli_fetch_array(mysqli_query($conn, "SELECT `id` FROM `betting` WHERE `open`=1"), MYSQLI_NUM); 

foreach($bets as $row){ 
     $bet = mysqli_query($conn, "SELECT `id` FROM `betting` WHERE `id`=$row"); 
     $hostu = $bet[0]; 
     $bet_amount = $bet[4]; 
     echo " 
     <br> 
     <div style=\"border:1px solid grey;\"> 
      <span>Bet: $bet_amount Rubies, Opponent (host): $hostu</span><p>id $row</p> 
      <button style=\"width: 10%;\" onclick=\"window.location = 'bet.php?id=" . $row ."'\">Bet</button> 
     </div> 
     "; 
    } 

, ancak yalnızca bir kimliği getirir. PhpMyadmin'de "SELECT id FROM betting WHERE id = $ satır" 'u test ettiğimde, tam olarak ne istediğimi döndürür, ancak bir nedenden dolayı php kodumda değil. Açık = 1 olan 4'üm olduğunda bir kimlik verir.

+4

sadece fetch_array'ını çağırdınız, bu yüzden neden – Ghost

+1

Lütfen kodunuzu doğru biçimlendirin; hepsi berbattı. – Marcus

+1

** UYARI **: "mysqli" kullanırken, kullanıcı eklemek için parametreli sorgular ve ['bind_param'] (http://php.net/manual/en/mysqli-stmt.bind-param.php) kullanmalısınız. Sorgunuza veri. ** Ciddi bir [SQL enjeksiyon hatası] (http://bobby-tables.com/) oluşturduğunuz için bunu gerçekleştirmek için dize enterpolasyonu veya birleştirme kullanmayın. ** ASLA ** bir sorguya doğrudan '$ _POST' veri koydu. – tadman

cevap

2

Fetch_array işlevi ilk satırı yalnızca bir diziye alır ve satır işaretçisini ileriye doğru hareket ettirir. Yapmanız gereken şey, satır işaretçisini, satır işaretçisi artık daha fazla satır bulana kadar, her seferinde dönmek üzere bir döngü ile adım atmaktır.

aşağıdaki kodu deneyin:

$conn = mysqli_connect($sql_servername, $sql_username, $sql_password, $sql_dbname); 

$bets = mysqli_query($conn, "SELECT id FROM betting WHERE open=1"); 

while($row = mysqli_fetch_array($bets, MYSQL_NUM)) { 
    // Do something with your row data 
    echo $row[0]; 
} 

Esasen süre döngü sorgu sonucundan $ sıranın yeni bir örneğini toplama ve ileri satır işaretçisi ilerliyor edilir neler olduğunu. Alınacak başka satır olmadığında - fetch_array döngü sona erdiğinde false değerini döndürür. -----

+0

Teşekkürler çok! Hayat kurtarıcı :) – UltraHex