2009-03-26 20 views
0

Hallo Ich fange auf php und ich habe folgendes SkriptPHP + MySQL-Zeilen Rückkehr nur int

<?php 

$username = "firstleg_floa"; 
$password = "**"; 
$hostname = "***1"; 
$db = "firstleg_bank"; 
$guildUser = strtolower('grissiom'); 

$dbh = mysql_connect($hostname, $username, $password) or die ("Unable To Connect"); 
$connectDB = mysql_select_db($db, $dbh); 
$results = mysql_query("SELECT * FROM Bank where userId ='" .$guildUser."'"); 

$i = 0; 
$rsArr = array(); 

While ($row = mysql_fetch_array($results, MYSQL_ASSOC)) 
{ 
    $rsArr [$i] [0] = $row{'userId'}; 
    $rsArr [$i] [1] = $row{'item'}; 
    $rsArr [$i] [2] = $row{'amount'}; 
    $rsArr [$i] [3] = $row{'position'}; 
    $i++; 
} 
?> 
<?="ghdfdgdfg ". $rsArr[$i][1];}." ----";?> 
    <? echo $rsArr[$i][0]; ?> 
    <table> 
    <tr><td>Item</td><td>Amount</td></tr> 
    <?for ($x=0;$x <= $i; $x++) 
    {?> 
    <tr><td><?=$rsArr[$x][3];?></td><td><?=$rsArr[$x][2];?></td></tr> 
    <?}?> 
    </table> 

<?php 
mysql_close($dbh); ?> 

und ich habe die folgenden Daten in der Datenbank

1 - grissiom - Seidenstoff - 100 - 1

mit den oben genannten Daten und dem oben genannten Skript alles, was ich herausziehen kann, ist die Menge (100) und die Position (1) Wie kommt es, dass ich nichts anderes herausziehen kann? kann jemand mir bitte helfen

Antwort

1

nach Schleife $ abgeschlossen ist i gleich 1, aber $ rsArr [$ i] ist nicht definiert, so Variablen $ rsArr [ $ i] [0] und $ rsArr [$ i] [1] doensn't existiert, versuchen $ rsArr mit [0] [0] und $ rsArr [0] [1] wie folgt aus:

<?="ghdfdgdfg ". $rsArr[0][1];}." ----";?> 
    <? echo $rsArr[0][0]; ?> 
    <table> 
    <tr><td>Item</td><td>Amount</td></tr> 
    <?for ($x=0;$x <= $i; $x++) 
    {?> 
    <tr><td><?=$rsArr[$x][3];?></td><td><?=$rsArr[$x][2];?></td></tr> 
    <?}?> 
    </table> 
4

Es könnte sein, weil Sie geschweifte Klammern anstelle von Quadrat verwenden. Die von mysql_fetch_array() zurückgegebene Zeile ist ein PHP-Array, kein Objekt oder String.

+0

Arrays in PHP können auch mit geschweiften Klammern definiert werden. das ist kein Problem. – Ivan

+0

Ivan, das ist nicht wahr. –

+0

Milen, versuchen Sie folgenden Code: 'ein test', 'ein anderer test2' => 'test',); echo $ arr ['test']. "\ N"; $ arr {'test3'} = 'drittes Element'; var_export ($ arr); Echo "\ n"; $ arr2 = Array ('test1', 'test2', 'test3'); echo $ arr {2}. "\ N"; array_push ($ arr2, 'test4'); var_export ($ arr2); ?> – Ivan

0

Es scheint in Ordnung zu mir, vielleicht ist Ausgabe von geschweiften Klammern gegeben.

Auf jeden Fall würde ich mit etwas einfacheren Syntax gehen, das heißt:

<?php 

$username = "firstleg_floa"; 
$password = "**"; 
$hostname = "***1"; 
$db = "firstleg_bank"; 
$guildUser = strtolower('grissiom'); 

$dbh = mysql_connect($hostname, $username, $password) or die ("Unable To Connect"); 
$connectDB = mysql_select_db($db, $dbh); 
$results = mysql_query("SELECT * FROM Bank where userId ='" .$guildUser."'"); 

$i = 0; 
$rsArr = array(); 
while ($row = mysql_fetch_array($results, MYSQL_ASSOC)) 
{ 
    $rsArr[] = $row; 
} 
mysql_close($dbh); 
echo '<table><tr><td>Item</td><td>Amount</td></tr>'; 
for ($i = 0;$i<count($rsArr);$i++){ 
    echo <<<EOF 
    <tr><td>{$rsArr["item"]}</td><td>{$rsArr["amount"]}</td></tr> 
EOF; 
} 
echo '</table>'; 
?> 
3

Mögliche Lösungen:

1) Die Spaltennamen in der DB haben andere Fälle, z userId konnte nur userid

2) werden, um diese Spalten nicht existieren.

3) Sie verwenden geschweiften Klammern, statt eckigen Klammern:

$rsArr [$i][0] = $row{'userId'}; //wrong 
$rsArr [$i] [0] = $row['userId']; //correct 

Versuchen Sie, die while-Schleife mit diesem zu ersetzen, wird es den Inhalt der einzelnen Datensatz ausgelesen, wie die DB es zu PHP bestanden hat:

while ($row = mysql_fetch_array($results, MYSQL_ASSOC)) 
{ 
    echo '<pre>' . var_dump($row) . </pre>; 
} 

um genau zu sehen, was von der DB zurückkommt.