非常新的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
答案 0 :(得分:3)
file()
在每行末尾的换行符中留下,只有最后一行缺少。您可以使用rtrim($test)
来解决此问题。
如果名称包含'
之类的字符,您也应该转义该名称,因此完整的解决方案将(在查询之前):
$test = mysql_real_escape_string(rtrim($test));