我已经尝试了几个小时,但没有任何运气。我在网上找到的每个教程都给出了使用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,面向对象等的教程......但没有一个是完整的(我也看了用户手册)。
谢谢。
编辑:数据库的结构如下(到目前为止)
数据库名称:项数据
表名:item_prices
该表有 4 列:
- itemID(主键)- 这是要搜索的内容(键入 int)
- 成本(浮点型)
- 零售(浮子型)
- 库存(布尔型)
我正在尝试使用 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
我已经稍微看了一下你的代码,我很确定(比如 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);
?>
由于您的查询可能返回多行,因此您需要将 fetch 函数放在 while 循环中。
while ($row = mysql_fetch_assoc($result))
{
echo $row["cost"];
echo $row["retail"];
echo $row["instock"];
}
此外,根据您的表描述,您没有名为"可用"的属性。
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);
您将获得所有变量,但分配的名称与您在数据库中获得的名称相同。