在PHP/MySQL中使用数组

在PHP/MySQL中使用数组,php,mysql,Php,Mysql,您好,我正在使用file_get_contents搜索一个场外文本文件,该文件返回一个数组,如下所示: $foo_data = file_get_contents('http://foo/data_csv.php?code='.$row->code); $foo_code = explode(",",$foo_data); $foo_id = $foo_code[9]; <?php include $_SERVER['DOCUMENT_ROOT']. '/class2.php';

您好,我正在使用file_get_contents搜索一个场外文本文件,该文件返回一个数组,如下所示:

$foo_data = file_get_contents('http://foo/data_csv.php?code='.$row->code);
$foo_code = explode(",",$foo_data);
$foo_id = $foo_code[9]; 
<?php
include $_SERVER['DOCUMENT_ROOT']. '/class2.php';
Global $currentUser;
$user_name = $currentUser['user_loginname'];
$user_call = strtoupper($user_name);
$user_region = $currentUser['user_region'];
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<body>
<?
include("db_uploadlog.php");
if (!file_exists("db_uploadlog.php")) {
echo "Error - Config file is missing!";
}
else
{
$db_2 = mysql_connect($database_host, $database_username, $database_password);
mysql_select_db("db_name") or die("Cannot select database");

$foo_data = file_get_contents('http://foo.com/data_csv.php?code='.$row->code);
$foo_code = explode("|",$foo_data);
$foo_id - $foo_code[9]

$result = mysql_query("SELECT `column1`, `column1_id`, `code`, `column1_region`, '{$foo_id}' AS score FROM $table GROUP BY `column1` ORDER BY score DESC", $db_2);
$rowpos = mysql_num_rows($result);
$mnum = 1;
$mnum2 = 1;

if(mysql_num_rows($result) > 0)
{
?>

<table width="100%" align="center" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="2%"><b>Pos</b></td>
<td><b>Code</b></td>
<td width="10%"><b>Score</b></td>
</tr>
<?
for($i = 0; $i < mysql_num_rows($result); $i++)
{
$row = mysql_fetch_object($result);
?>
<tr>
<td><? echo $mnum2; ?></td>
<td><? echo $row->column1; ?></td>
<td><? echo $row->score; ?></td>
</tr>
<?
$mnum2 = $mnum2 + 1;
$mnum = $mnum + 1;
}
mysql_free_result($result);
mysql_close($db_2);
?>
</table>
</div>
<?
}
}
?>
</body>
</html>

如果我将以上几行放在MySQL Select语句之前,那么$foo_数据变量是空的,因为它尚未初始化

如何在MySQL语句中引用此变量,例如:

SELECT `field1`, `field2`, COUNT(distinct $foo_id) AS Ref
我试过:

SELECT `field1`, `field2`, COUNT(distinct {$foo_id}) AS Ref
SELECT `field1`, `field2`, COUNT(distinct '{$foo_id}') AS Ref
有人知道它是否能够从上述文件内容中获取的数组中引用表行吗

完成代码如下:

$foo_data = file_get_contents('http://foo/data_csv.php?code='.$row->code);
$foo_code = explode(",",$foo_data);
$foo_id = $foo_code[9]; 
<?php
include $_SERVER['DOCUMENT_ROOT']. '/class2.php';
Global $currentUser;
$user_name = $currentUser['user_loginname'];
$user_call = strtoupper($user_name);
$user_region = $currentUser['user_region'];
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<body>
<?
include("db_uploadlog.php");
if (!file_exists("db_uploadlog.php")) {
echo "Error - Config file is missing!";
}
else
{
$db_2 = mysql_connect($database_host, $database_username, $database_password);
mysql_select_db("db_name") or die("Cannot select database");

$foo_data = file_get_contents('http://foo.com/data_csv.php?code='.$row->code);
$foo_code = explode("|",$foo_data);
$foo_id - $foo_code[9]

$result = mysql_query("SELECT `column1`, `column1_id`, `code`, `column1_region`, '{$foo_id}' AS score FROM $table GROUP BY `column1` ORDER BY score DESC", $db_2);
$rowpos = mysql_num_rows($result);
$mnum = 1;
$mnum2 = 1;

if(mysql_num_rows($result) > 0)
{
?>

<table width="100%" align="center" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="2%"><b>Pos</b></td>
<td><b>Code</b></td>
<td width="10%"><b>Score</b></td>
</tr>
<?
for($i = 0; $i < mysql_num_rows($result); $i++)
{
$row = mysql_fetch_object($result);
?>
<tr>
<td><? echo $mnum2; ?></td>
<td><? echo $row->column1; ?></td>
<td><? echo $row->score; ?></td>
</tr>
<?
$mnum2 = $mnum2 + 1;
$mnum = $mnum + 1;
}
mysql_free_result($result);
mysql_close($db_2);
?>
</table>
</div>
<?
}
}
?>
</body>
</html>

根据评论编辑:

然后,您的问题是,file\u get\u内容无法恢复数据,您必须激活该属性,在php.ini上将该属性设置为1,您的代码应该可以工作


但是我建议您使用curl而不是file\u get\u contents,这样您将有更多的控制权,curl就是为这个而设计的,不是吗?

如果我将上面的行放在MySQL Select语句之前,那么$foo\u数据变量是空的,因为它还没有初始化。 这可能是因为您在文件内容中引用了MySQL select的结果

除此之外,它应该可以工作,您基本上是在PHP中生成一个字符串,并将其发送到MySQL服务器进行解析。所以对于MySQL来说,手工输入或者使用一些预生成的值都无关紧要

但是,如果要从外部源组装字符串,则需要信任源,否则应将PDO与bindParam一起使用

编辑 我看我最初的想法是正确的

$foo_data = file_get_contents('http://foo.com/data_csv.php?code='.$row->code);
这里$row->代码还没有初始化,所以如果文件在任何地方出现,它的内容就会转到

您需要在$foo_数据上方选择另一个设置$row->code的选项

PHP通常会显示一条错误消息,但您可能正在生产模式下运行。如果您正在测试,可以将其放在文档的顶部

<?php
    error_reporting(E_ALL);
    ini_set("display_errors", 1);
?>

这将有助于您更好地调试脚本。

您希望查询做什么?不清楚您要问什么。我的查询使用$row->code中的值作为要在文件内容(例如文件内容)中使用的id;将在csv文件中搜索ABC字段值,并将该记录作为数组返回。我可以手动输入像ABC这样的值,但当我尝试使用$row->code的内容时,这失败了,因为似乎还没有任何$row->code实例,所以我在脚本中设置内容的顺序可能是错误的,或者我必须在MySQL select语句中使用file\U get\U内容。希望,这个错误最终被更正:$foo_id-$foo_code[9],应该是“=”而不是“-”。这可能会造成相当多的混乱…只是尝试了backsticks,这就终止了查询,根本没有结果。删除backstick返回结果,但$foo_id为空。那么$foo_id中没有任何值,我的问题是如何将$row->code的内容加载到$foo_数据中?谢谢。我已经确认,如果我手动提供一个已知的值来代替$row->code,那么file\u get\u内容就可以工作。我的问题是,我无法获取$row->code的值来填充file\u get\u contents命令。也许我的语法是:file_get_contents';不正确且未获取字段值?我来读一下卷曲,看看这是否更好。谢谢用完整的代码回答您的问题,包括当您恢复$ROW时谢谢您的建议,源代码是可信的,但我确实接受您的观点。如果我能先让这个MyQSL版本工作,我会把这个脚本转换成PDO。很抱歉延迟回复,我已经离开一周了。我已经按照要求更新了我的问题,包括我的完整代码。我更新了我的答案。当您在file\u get\u contents中访问它时,$row->code中没有值。