使用PHP从MySQL获取信息时遇到问题

使用PHP从MySQL获取信息时遇到问题,php,mysql,database,Php,Mysql,Database,我已经试了好几个小时了,但是运气不好。我在网上找到的每一篇教程都提供了一种使用PHP连接MySQL数据库的不同方法,因此很难找到一致性 当我运行下面的代码时,我尝试检索的值得到“0”。我如何获得这些值?到目前为止,我有以下代码: <?php //Connect to MySQL server $conn = mysql_connect('XXIP ADDRESSXX', 'XXUSERNAMEXX', 'XXPASSWORDXX') or die(mysq

我已经试了好几个小时了,但是运气不好。我在网上找到的每一篇教程都提供了一种使用PHP连接MySQL数据库的不同方法,因此很难找到一致性

当我运行下面的代码时,我尝试检索的值得到“0”。我如何获得这些值?到目前为止,我有以下代码:

<?php 
        //Connect to MySQL server
        $conn = mysql_connect('XXIP ADDRESSXX', 'XXUSERNAMEXX', 'XXPASSWORDXX') or die(mysql_error()); //Connect to mysql

        //Continue if connection successful
        if($conn != null) {
            $db_selected = mysql_select_db('itemdata', $conn) or die(mysql_error()); //Connect to database using the connection

            //Continue if selected database successfully
            if($db_selected == true) {
                //The statement used to query the database  
                $query = "SELECT * FROM item_prices";

                //Store the results of the query
                $result = mysql_query($query, $conn) or die(mysql_error()); //Retrieve all data from the table  

                //Convert to assoc array
                $values = mysql_fetch_assoc($result);

                $cost = $values['cost'];
                $retail = $values['retail'];
                $in_stock = $values['available'];

                                    echo("<p>$cost</p>");
                                    echo("<p>$retail</p>");
                                    echo("<p>$in_stock</p>");
            }
            else 
                echo "Unable to connect to database";
        }
        else
            echo "Unable to connect to MySQL Server";

        //Close database
        mysql_close($conn);
    ?>
1) 您说您正在搜索itemId,但查询没有“where”条件

2) 由于您的表有多行,因此您应该以这种方式使用mysql\u fetch\u assoc来获取所有行:

// While a row of data exists, put that row in $row as an associative array
// Note: If you're expecting just one row, no need to use a loop
// Note: If you put extract($row); inside the following loop, you'll
//       then create $userid, $fullname, and $userstatus
while ($row = mysql_fetch_assoc($result)) {
    echo $row["userid"]; 
    echo $row["fullname"];
    echo $row["userstatus"];
}
如果你只期望一个结果,你可以这样做:

$row = mysql_fetch_assoc($result);
extract($row);
您将获得所有变量,这些变量的名称与您在数据库中获得的名称相同。

1)您说您正在搜索itemId,但查询没有“where”条件

2) 由于您的表有多行,因此您应该以这种方式使用mysql\u fetch\u assoc来获取所有行:

// While a row of data exists, put that row in $row as an associative array
// Note: If you're expecting just one row, no need to use a loop
// Note: If you put extract($row); inside the following loop, you'll
//       then create $userid, $fullname, and $userstatus
while ($row = mysql_fetch_assoc($result)) {
    echo $row["userid"]; 
    echo $row["fullname"];
    echo $row["userstatus"];
}
如果你只期望一个结果,你可以这样做:

$row = mysql_fetch_assoc($result);
extract($row);

您将获得所有变量,这些变量的名称与您在数据库中获得的名称相同。

因为您的查询可能返回多行,所以需要将fetch函数放入while循环中

while ($row = mysql_fetch_assoc($result)) 
{
    echo $row["cost"];
    echo $row["retail"];
    echo $row["instock"];
}

另外,根据您的表描述,您没有名为“available”的属性。

因为您的查询可能返回多行,所以需要将fetch函数放入while循环中

while ($row = mysql_fetch_assoc($result)) 
{
    echo $row["cost"];
    echo $row["retail"];
    echo $row["instock"];
}

另外,根据您的表描述,您没有名为“available”的属性。

我看了一下您的代码,我非常确定(比如95%)这是有效的代码。如果它仍然不起作用,你就犯了其他错误

顺便说一下,当您使用
die()
时,不需要回显错误消息,脚本将从此点停止工作

这是我的美化代码:

<?php 
//Connect to MySQL server
$conn = mysql_connect('XXIP ADDRESSXX', 'XXUSERNAMEXX', 'XXPASSWORDXX')
    or die('Unable to connect to MySQL Server');


// Select db
mysql_select_db('itemdata', $conn)
    or die('Unable to connect to database');

// Run the query and fetch the results
$query = "SELECT cost FROM item_prices WHERE itemID = 4";
$values = mysql_fetch_assoc(mysql_query($query));

// Echo everything
echo '<p>'.$values['cost'].'</p>';
echo '<p>'.$values['retail'].'</p>';
echo '<p>'.$values['available'].'</p>';

// Close the connection
mysql_close($conn);
?>

我看了一下您的代码,我非常肯定(比如95%)这是有效的代码。如果它仍然不起作用,你就犯了其他错误

顺便说一下,当您使用
die()
时,不需要回显错误消息,脚本将从此点停止工作

这是我的美化代码:

<?php 
//Connect to MySQL server
$conn = mysql_connect('XXIP ADDRESSXX', 'XXUSERNAMEXX', 'XXPASSWORDXX')
    or die('Unable to connect to MySQL Server');


// Select db
mysql_select_db('itemdata', $conn)
    or die('Unable to connect to database');

// Run the query and fetch the results
$query = "SELECT cost FROM item_prices WHERE itemID = 4";
$values = mysql_fetch_assoc(mysql_query($query));

// Echo everything
echo '<p>'.$values['cost'].'</p>';
echo '<p>'.$values['retail'].'</p>';
echo '<p>'.$values['available'].'</p>';

// Close the connection
mysql_close($conn);
?>



您能告诉我们您的数据库是什么样子的吗?我至少可以看到3列,它们是什么类型的?整数等。我没有看到任何代码在赋值后实际输出变量。正如我提到的,我删除了它(但我将在上面的代码中重新添加它只是为了测试目的),因为我知道您使用mysql_fetch_assoc只需要一行。。你确定你的商品价格表中只有一行吗?您说您正在搜索itemID,但查询是通用的“从item_prices中选择*”,其中“where”条件是?;)我最初的查询是“从item_prices中选择'cost',其中itemID=4”您能告诉我们您的数据库是什么样的吗?我至少可以看到3列,它们是什么类型的?整数等。我没有看到任何代码在赋值后实际输出变量。正如我提到的,我删除了它(但我将在上面的代码中重新添加它只是为了测试目的),因为我知道您使用mysql_fetch_assoc只需要一行。。你确定你的商品价格表中只有一行吗?您说您正在搜索itemID,但查询是通用的“从item_prices中选择*”,其中“where”条件是?;)我最初的查询是“从item\u prices中选择'cost',其中itemID=4”。如果我将查询更改为“从item\u prices中选择*,其中itemID=X”,然后使用关联数组,我将只有那一条记录?我这样做了,谢谢。我误解了mysql\u fetch\u assoc()返回的内容。我认为它返回了整个表的关联数组如果我将查询更改为“SELECT*FROM item_prices WHERE itemID=X”,然后使用关联数组,我就只有那一条记录了?我这样做了,谢谢。我误解了mysql\u fetch\u assoc()返回的内容。我认为它返回了整个表的关联数组。我刚刚意识到“可用”的错误,因为我刚刚将它修改为“instock”。由于这与上一篇文章几乎相同,我将奖励他答案。但是谢谢你的回答,我刚刚意识到“可用”的错误,因为我刚刚把它改成了“instock”。由于这与上一篇文章几乎相同,我将奖励他答案。但是谢谢你的回答事实上这好多了,但是有一个问题。使用mysql_query()时,是否需要将$conn(连接/链接)作为参数?除非运行更多连接,否则PHP将为您选择正确的连接:)这是最佳答案:),但对于未来的观察者,请将值['available']更改为值['instock']。谢谢你。如果你想从数据库输出多个值(就像所有东西一样),其他人会回答你可以使用的代码片段。这实际上要好得多,但有一个问题。使用mysql_query()时,是否需要将$conn(连接/链接)作为参数?除非运行更多连接,否则PHP将为您选择正确的连接:)这是最佳答案:),但对于未来的观察者,请将值['available']更改为值['instock']。谢谢你。如果您想从数据库中输出多个值(如所有内容),其他人会回答您可以使用的发布片段。