строки php + mysql возвращают только int - PullRequest
0 голосов
/ 26 марта 2009

Привет, я начинаю на php, и у меня есть следующий скрипт

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

и у меня есть следующие данные в базе данных

1 - гриссиом - шелковая ткань - 100 - 1

с вышеуказанными данными и приведенным выше сценарием все, что я могу вытащить, это сумма (100) и позиция (1), почему я не могу вытащить что-нибудь еще? может кто-нибудь помочь мне, пожалуйста

Ответы [ 4 ]

4 голосов
/ 26 марта 2009

Это может быть потому, что вы используете фигурные скобки вместо квадратных. Строка, возвращаемая mysql_fetch_array(), представляет собой массив PHP, а не объект или строку.

3 голосов
/ 26 марта 2009

Возможные решения:

1) Эти имена столбцов в БД имеют разные регистры, например ИД пользователя может быть просто ИД пользователя

2) Эти столбцы не существуют.

3) Вы используете фигурные скобки вместо квадратных скобок:

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

Попробуйте заменить цикл while следующим: он будет считывать содержимое каждой записи, когда БД передаст его PHP:

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

чтобы точно увидеть, что возвращается из БД.

1 голос
/ 26 марта 2009

после завершения цикла $ i равно 1, но $ rsArr [$ i] не определено, поэтому переменные $ rsArr [$ i] [0] и $ rsArr [$ i] [1] не существуют попробуйте использовать $ rsArr [0] [0] и $ rsArr [0] [1] следующим образом:

<?="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>
0 голосов
/ 26 марта 2009

Мне кажется, что проблема в использовании фигурных скобок.

В любом случае, я бы использовал более простой синтаксис, например:

<?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>';
 ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...