php + mysql satırlar sadece int dönen

4 Cevap php

Merhaba ben php üzerinde başladım ve senaryoyu takip var

<?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); ?>

ve ben veritabanında aşağıdaki veri

1 - grissiom - İpek Kumaş - 100 - 1

Yukarıdaki veriler ve yukarıdaki komut ile dışarı çekin yönetmek tüm tutarı (100) ve pozisyon (1) ben dışarı başka bir şey çekememek ne gelir ki? Birisi bana lütfen yardımcı olabilir

4 Cevap

loop $ bittikten sonra i 1 eşittir, ama $ rsArr [$ i] tanımlı değil, bu nedenle değişkenler $ rsArr [$ i] [0] ve $ rsArr [$ i] [1] doensn't var, kullanmayı deneyin $ rsArr [0] [0] ve $ rsArr [0] [1] Bu gibi:

<?="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>

Eğer küme parantezi yerine kare kullanarak konum çünkü olabilir. Tarafından döndürülen satır mysql_fetch_array(), bir PHP dizi değil, bir nesne ya da bir dize.

Olası çözümler:

1) DB olanlar sütun adları farklı durumda, örneğin var userId sadece userid olabilir

2) Bu sütunlar yok.

3) yerine köşeli parantez, kaşlı ayraçları kullanıyor:

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

Bu ile while döngüsü yerine deneyin, DB PHP bunu geçti gibi her kaydın içeriğini okuyacaktır:

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

geri DB geliyor tam olarak ne olduğunu görmek için.

Bana ok görünüyor, belki sorun kıvırcık parantez kullanarak verilir.

Her neyse bazı basit sözdizimi, yani gitmek istiyorum:

<?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>';
 ?>