有一些话题缩小了我的问题,但没有人允许我解决它。我有一个csv文件的术语,我想从中计算我的数据库表中的数字并将结果写入一个新的csv文件。 我需要创建一个新数组,其中每个键都是第一个数组的术语,值将是我数据库中相关的记录数。 以下是输入的一些示例:
乳糖
丝氨酸
我想得到这样的东西:
乳糖,25
丝氨酸,3
所以我创建了一个数组,其值是csv文件中的术语。 然后我在sql查询中输入此数组的值。 然后,我一直无法在互联网或php文档中找到正确的方法。最后一行完全失败,但我尝试了它,因为它似乎是管理我的任务的狭义。
有人可以帮助我吗?
提前致谢!
$termslist= array();
$file = fopen('fileterms.csv', 'r');
while (($line = fgetcsv($file)) !== FALSE) {
//$line is an array of the csv elements
foreach ($line AS $molindice => $molvalues)
{
if ( ! in_array( $molvalue, $termslist ) )
{array_push($termslist, $molvalues);}
}
}
fclose($file);
//print_r ($termslist);
$molnumbers = array();
foreach ($termslist as $ancientkey => $ancientvalue)
{
echo $ancientvalue;
$sql3 = "SELECT content from mols WHERE content like '% $ancientvalue %'";
$result3 = mysql_query($sql3)or die(mysql_error());
$count3 = mysql_num_rows($result3);
echo $count3;
$molnumbers [$ancientvalue['molnames']] = $count3['quantities'];
}
答案 0 :(得分:0)
变化:
$molnumbers [$ancientvalue['molnames']] = $count3['quantities'];
要:
$molnumbers[$ancientvalue['molnames']] = $count3['quantities'];
或者:
$molname = $ancientvalue['molnames'];
$molnumbers[$molname] = $count3['quantities'];
答案 1 :(得分:0)
在行中:
if ( ! in_array( $molvalue, $termslist ) )
你应该有一个小错误:
if ( ! in_array( $molvalues, $termslist ) )
然后在这一行:
$molnumbers [$ancientvalue['molnames']] = $count3['quantities'];
$ ancientvalue已经是值(或molname)本身而不是数组本身。 因此,该行只需要:
$molnumbers [$ancientvalue] = $count3['quantities'];
然后它应该将数字放入数组的正确部分。 对于sql本身:
$sql3 = "SELECT content from mols WHERE content like '% $ancientvalue %'";
在我看来,如果那不是什么,你正在寻找%BLANKancientvalueBLANK% 你想在那里做,但要寻找%ancientvalue%,你应该修改为:
$sql3 = 'SELECT content from mols WHERE content like \'%'.$ancientvalue.'%\'';