php+mysql行只返回int

php+mysql行只返回int,php,mysql,Php,Mysql,嗨,我开始学习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"); $connectD

嗨,我开始学习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-grissiom-丝绸-100-1


有了上面的数据和上面的脚本,我只能抽出数量100和位置1,为什么我不能抽出任何其他内容?有人能帮帮我吗可能是因为你用的是大括号而不是方括号。mysql_fetch_数组返回的行是一个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[] = $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>';
 ?>

循环完成后,$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>
可能的解决办法:

1数据库中的那些列名有不同的大小写,例如userId可能只是userId

2这些列不存在

3您使用的是大括号而不是方括号:

 $rsArr [$i][0] = $row{'userId'}; //wrong
 $rsArr [$i] [0] = $row['userId']; //correct
尝试用以下内容替换while循环,当DB将其传递给PHP时,它将读取每条记录的内容:

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

为了准确地查看数据库返回的内容,php中的数组也可以用大括号定义。这不是问题。米伦,试着运行这个代码:唯一的问题是你不能定义$arr{}='value'