将文件加载到数组中

时间:2011-03-03 23:36:29

标签: php

非常新的PHP并遇到了一些麻烦,并想知道是否有人可以提供帮助。我遇到了在数据库中查找的一系列名称的问题。当我只使用名称数组时,它会被正确处理。当我尝试读取这些相同名称的文件时,只显示姓氏。我的问题是如何才能显示文件数组的所有名称?

请参阅下面的示例和代码。谢谢你的时间。

//This works -- Sample 1
$x = array("joe", "paul", "tom");

//This does not -- Sample 2
$x = file("name.txt"); //Same names from the array above are in this file

以下是完整的代码。

<html>
    <head>
        <title>Name Check</title>
    </head>
    <body>
        <?php
            $con = mysql_connect("localhost", "xxxxxxxx", "xxxxxxxx");
            if (!$con) {
                die('Could not connect: ' . mysql_error());
            }

            mysql_select_db("xxxxxxxxxx", $con);

            // $x=array("joe", "paul", "tom"); //displays all names correctly in Sample 1 below
            $x = file("name.txt"); // only displays the last name in the file. Sample 2 below

            foreach ($x as $test) {
                $result = mysql_query("SELECT * FROM categories WHERE Name='$test' Limit 0, 1");

                while ($row = mysql_fetch_array($result)) {
                    echo $row['Name'];
                    echo " " . $row['Sport'];
                    echo "<br />";
                }
            }
        ?> 
    </body>
</html>

示例1输出

joe basketball
paul basketball
tom baseball

示例2输出

tom baseball

这是请求的name.txt的内容。谢谢!

joe 
paul 
tom

1 个答案:

答案 0 :(得分:3)

file()在每行末尾的换行符中留下,只有最后一行缺少。您可以使用rtrim($test)来解决此问题。

如果名称包含'之类的字符,您也应该转义该名称,因此完整的解决方案将(在查询之前):

$test = mysql_real_escape_string(rtrim($test));