我正在尝试创建一个依赖于数据库中某些信息的变量。我正在尝试生成一个存储路径的$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');
这背后的想法是在PHP运行之前设置$variable
,但是它被设置为00001
以进行测试。理想情况是$path
应该等于C:\WAMP\www\project\00001\
。目前,当我echo
返回$path
时,我得到的是原始路径,但未添加$groupID
。
我还收到消息“mysql_fetch_row()期望参数1是资源”但我之前使用此方法检索信息并且工作正常,我以同样的方式设置我的表,所以我不知道认为问题存在。
我有一种感觉我错过了一些明显的东西,所以任何帮助都会受到赞赏。这不是一个任务或任何与学校有关的事情(只是尝试了解更多信息)所以请自行解决问题并解释原因:)
此外,只有一个memberID
会与$variable
匹配,所以如果有其他方法可以获取它,我会很高兴知道。
哦,我知道我的变量名称令人震惊,但他们只是在这里,在我的实际代码上他们是不同的所以没有批评请:p
编辑: SQL查询是正确的,按照BT634的建议,在phpMyAdmin上运行时,我得到了我想要的groupID。
答案 0 :(得分:2)
mysql_select_db("table", $linkid)
实际应该是
mysql_select_db("database_name", $linkid)
因为您要连接到包含表而不是表本身的数据库。
另外,请尝试mysql_result($temp,0)
而不是while循环
答案 1 :(得分:1)
找出肯定运行的查询,并将其粘贴到普通的MySQL客户端,以确保您的查询正确。
在定义“$ variable”
后立即执行此操作exit("SELECT groupID FROM table WHERE memberID='$variable'");
然后将输出复制到MySQL客户端(或命令行中的MySQL)。
答案 2 :(得分:1)
首先,您没有在连接中指定要连接的数据库 - 您要指定表。您可能还想检查查询返回的行数:
$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' => '...'
)
答案 3 :(得分: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
。