1

我正在尝试创建一个依赖于数据库中某些信息的变量。我正在尝试生成一个$path存储路径的变量,具体取决于从数据库中恢复的信息。

$linkid = mysql_connect('localhost','user','password');
mysql_select_db("table", $linkid);
$variable = "00001";
$groupID = null;
$temp = mysql_query("SELECT groupID FROM table WHERE memberID='$variable'", $linkid);

while ($row = mysql_fetch_row($temp)){
    global $groupID;
    foreach ($row as $field){
        $groupID = $field;
    }
}

....

$path = "C:\WAMP\www\project\\" . $groupID;
$dir_handle = @opendir($path) or die('Unable to open $path');

这背后的想法$variable是在 PHP 运行之前设置,但是它设置为00001用于测试。理想的情况是$path应该相等C:\WAMP\www\project\00001\。目前,当我echo返回时,$path我得到的只是原始路径,没有$groupID添加到末尾。

我还收到消息“mysql_fetch_row() 期望参数 1 是资源”,但我之前使用过这个方法来检索信息,它工作得很好,我以同样的方式设置我的表,所以我不认为问题就在那里。

我有一种感觉,我错过了一些明显的东西,所以任何帮助表示赞赏。这不是为了作业或任何与学校相关的事情(只是尝试一些东西以了解更多信息),所以请自己纠正并解释原因:)

此外,只有一个memberID$variable.

哦,我知道我的变量名令人震惊,但它们只是在这里,在我的实际代码中它们是不同的,所以请不要批评:p

编辑: SQL 查询是正确的,遵循 BT634 的建议并在 phpMyAdmin 上运行它时,我得到了我想要和期望的 groupID。

4

4 回答 4

2
mysql_select_db("table", $linkid)

实际上应该是

mysql_select_db("database_name", $linkid)

因为您正在连接到包含表的数据库而不是表本身。

另外,尝试mysql_result($temp,0)代替while循环

于 2013-01-17T21:18:48.707 回答
1

找出它肯定在运行的查询,并将其粘贴到普通的 MySQL 客户端以确保您的查询是正确的。

只需在定义“$variable”后执行此操作

exit("SELECT groupID FROM table WHERE memberID='$variable'");

然后将输出复制到 MySQL 客户端(或命令行中的 MySQL)。

于 2013-01-17T21:10:00.210 回答
1

首先,您没有指定连接中要连接的数据库- 您指定的是什么table。您可能还想检查查询返回的行数:

$temp = mysql_query("SELECT groupID FROM table WHERE memberID='$variable'", $linkid);
echo mysql_num_rows($temp);

如果它仍然抱怨$temp不是有效资源,请将您的 MySQL 连接代码更改为:

// Establish connection
$con = mysql_connect("localhost","peter","abc123");
if (!$con) die('Could not connect: ' . mysql_error());
mysql_select_db("my_db", $con);

// Make your query
$result = mysql_query("SELECT groupID FROM table WHERE memberID='$variable'");

// Find out what the value of the query is (i.e. what object/resource it is)
var_dump($result);

一旦您知道 MySQL 正在返回有效数据,请提取您想要的值。您不必使用全局变量:

while ($row = mysql_fetch_row($temp)){
    $groupId = $row[0];
}

// Use $groupId however you please...

要记住的一件事是mysql_fetch_row它将返回

array
(
   0 => '...'
)

虽然mysql_fetch_assoc将返回:

array
(
   'groupId' => '...'
)
于 2013-01-17T21:18:49.000 回答
1

尝试这样的事情:

global $groupID;

$linkid = mysql_connect('localhost','user','password');
mysql_select_db("table", $linkid);
$variable = "00001";
$groupID = null;
$sql = "SELECT groupID FROM table WHERE memberID='$variable'";
$temp = mysql_query($sql, $linkid) or die(mysql_error());

$row = mysql_fetch_row($temp);
if ($row) {
    $groupID = $row['groupID'];
}

如果您正在检索单个值,并且保证它是唯一的,那么循环结构是不必要的。我添加了一个检查,以确保在出现问题时查询退出并出现错误 - 在任何地方都这样做是理想的,所以例如也这样做mysql_select_db

于 2013-01-17T21:19:32.267 回答