我有一个关于如何进行我正在进行的项目的下一阶段的问题。
第一阶段:
创建一个php脚本,用于抓取所有.txt文件的目录。 打开/解析每一行,爆炸成阵列...... 循环遍历数组挑选出所需的数据并将所有内容插入数据库(插入120 + .txt文件和100k记录)..
这引导我进入下一步,
第二阶段:
我需要获取数千个数字中的10个数字的'列表'。 循环遍历每一个,使用该数据(数字)作为搜索项到QUERY数据库..如果找到匹配,我需要在同一记录/行的不同列中获取一段数据..
我计划采取的一般想法/步骤
具体细节:
我不确定如何进行这样的“多重”搜索/选择语句?
如何使用唯一的搜索词执行多个SELECT语句?并收集返回的列数据?
数据库是否足够快以在这样的循环中返回匹配的值/数据?在重复循环之前,我是否需要以某种方式等待/暂停/延迟返回数据?
谢谢!
我正在使用/尝试的当前功能:
这是我目前所处的位置:
$harNumArray2 = implode(',', $harNumArray);
//$harNumArray2 = '"' . implode('","', $harNumArray) . '"';
$query = "SELECT guar_nu FROM placements WHERE har_id IN ($harNumArray2)";
echo $query;
$match = mysql_query($query);
//$match = mysql_query('"' . $query . '"');
$results = $match;
echo("<BR><BR>");
print_r($results);
我分别得到这些输出:
数组([0] =&gt; sample_source.txt)
GRAB HAR ID的总文件数量来自:1
所有文件中发现的TOAL HARS:5 SELECT guar_nu FROM placements WHERE har_id IN(“108383442”,“106620416”,“109570835”,“109700427”,“100022236”)
&安培;
数组([0] =&gt; sample_source.txt)
GRAB HAR ID的总文件数量来自:1
所有文件中发现的TOAL HARS:5 SELECT guar_nu FROM placements WHERE har_id IN(108383442,106620416,109570835,109700427,100022236)
我在哪里坚持实际执行它?
谢谢!
更新
这段代码似乎工作'好'..但我不明白如何正确处理重新定义的数据..我似乎只输出(打印)最后一个变量/行数据...而不是整个列表..
$harNumArray2 = implode(',', $harNumArray);
//$harNumArray2 = '"' . implode('","', $harNumArray) . '"';
$query = "SELECT guar_nu FROM placements WHERE har_id IN ($harNumArray2)";
echo $query;
$match = mysql_query($query);
//$match = mysql_query('"' . $query . '"');
$results = $match;
echo("<BR><BR>");
print_r($results);
如何正确处理此返回的数据?
谢谢!
答案 0 :(得分:0)
我不知道这是否能回答你的问题,但我认为你在询问子查询。它们非常简单,只是看起来像这样
SELECT * FROM tbl1 WHERE id = (SELECT num FROM tbl2 WHERE id = 1);
仅当第二个子查询有一个唯一值时才会起作用。如果它返回多行,它将返回一个解析错误。如果必须选择多行研究JOIN语句。这可以帮助你入门
答案 1 :(得分:-1)
我不确定如何进行这样的“多重”搜索/选择语句?
关于多重选择,(我假设您使用的是MySQL),您只需使用“IN" keyword:
即可执行此操作例如:
SELECT *
FROM YOUR_TABLE
WHERE COLUMN_NAME IN (LIST, OF, SEARCH, VALUES, SEPARATED, BY COMMAS)
编辑:关注问题中的更新代码。
在我们继续之前的一点......你应该尝试避免PHP中的mysql_函数用于新代码,因为它们即将被弃用。考虑使用通用的PHP DB处理程序PDO或更新的mysqli_函数。有关为您选择“正确”API的更多帮助是here。
如何正确处理此返回的数据?
为了处理多行数据(你是),你应该使用一个循环。像下面这样的东西应该这样做(我的例子将使用mysqli_函数 - 这可能与你一直使用的API有点类似):
$mysqli = mysqli_connect("localhost", "user", "pass");
mysqli_select_db($mysqli, "YOUR_DB");
// make a comma separated list of the $ids.
$ids = join(", ", $id_list);
// note: you need to pass the db connection to many of these methods with the mysqli_ API
$results = mysqli_query($mysqli, "SELECT har_id, guar_num FROM placements WHERE har_id IN ($ids)");
$num_rows = mysqli_num_rows($results);
while ($row = mysqli_fetch_assoc($results)) {
echo "HAR_ID: ". $row["har_id"]. "\tGUAR_NUM: " . $row["guar_num"] . "\n";
}
请注意,这是非常基本的(并且未经测试!)代码,只是为了显示最少的步骤。 :)