无法使用PHP从MySQL获取信息

时间:2012-08-09 22:21:36

标签: php mysql database

我已经尝试了几个小时,但没有运气。我在网上找到的每个教程都提供了一种使用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);
    ?>

现在获取更多信息:通过调试,我验证了代码到达最内部的“if”语句,因此它正确连接并选择数据库。没有任何错误被抛出,因为我只是为我试图检索的3个变量收到“0”。 (我在之后尝试打印以确认它不是可变范围的问题)。

任何帮助都会很棒,我从来没有编写过与MySQL的连接,而且我找不到最好的方法(我找到了关于mysqli,mysql,面向对象等的教程......而且没有一个是完整的(我看了一下用户手册)..

感谢。

编辑:数据库的结构如下(到目前为止)

数据库名称:itemdata

表名:item_prices

该表有4列:

  • itemID(主键) - 这是搜索的内容(类型int)
  • 费用(类型浮动)
  • 零售(类型浮动)
  • instock(type boolean)

我正在尝试使用itemID

检索表中的所有值

最终编辑 我从PHPMyAdmin复制了表(这是用于测试目的,所以数据是bs)

itemID  cost    retail  instock
0   0   0   0
1   100 150 1
2   200 250 1
3   300 350 0
4   400 450 0
5   500 550 1
10  100 150 1
11  200 250 1
12  300 350 0
13  400 450 0
14  500 550 1

3 个答案:

答案 0 :(得分:1)

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

2)因为你的表有多行因此你应该用这种方式使用mysql_fetch_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 :(得分:1)

由于您的查询可能返回多行,因此您需要将fetch函数放入while循环中。

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

同样根据您的表格描述,您没有名为&#34;可用的属性&#34;。

答案 2 :(得分:1)

我已经看了一下你的代码,我很确定(比如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);
?>