我正在尝试建立一个访问SQLite数据库的网站,并检索不同人的信息。但是,我遇到了一些问题。这是我的索引页面的代码。
<?php
$db = new SQLite3('people.db');
$results = $db->query('select FirstName,LastName from People');
?>
<html>
<head>
</head>
<body>
<?php
while ($row = $results->fetchArray()) {
echo '<div class="person"><p class="name"><a href="lookup.php?first=" .
urlencode($row['FirstName']) . '&last=' . urlencode($row['LastName']) . '">' .
$row['FirstName'] . ' ' . $row['LastName'] . '</a></p></div>;
?>
}
?>
</body>
</html>
lookup.php代码:
<?php
$db = new SQLite3('people.db');
$first = urldecode($_GET['first']);
$last = urldecode($_GET['last']);
$results = $db->query('select * from People where FirstName="' . $first . '" and LastName="' . $last . '"');
$row = $results->fetchArray();
?>
<html>
<head>
</head>
<body>
<div class="person">
Name: <?php echo $row['FirstName'] ?><br/>
Last Name: <?php echo $row['LastName'] ?><br/>
Age: <?php echo $row['Age'] ?><br/>
</div>
</body>
</html>
当我点击FirstName为“Denzil”且LastName为“Ezras”的索引页面上的某个人的名字时,它可以正常工作。 lookup.php显示他的FirstName,LastName和Age。但是,当一个人的名字或姓氏中有空格时,我会遇到问题。例如,FirstName为“James”且LastName为“De Jongh”的人,lookup.php将不显示FirstName,LastName或Age。此页面的URL显示为:
http://localhost/lookup.php?first=James&last=De+Jongh
我已经尝试在PHP中使用var_export来查看$ first和$ last,它们似乎是有序的。当我将它们复制并粘贴到sqlite3.exe中时,它会提供正确的值。我做错了什么?
答案 0 :(得分:1)
试试这个 正如我从网址中看到的,而不是将空格显示为%20,它将其显示为+ 这会将任何空格转换为%20,这是url可以接受的。
$last = str_replace(' ', '%20', $last);
或者你可以简单地使用
rawurlencode($lastName);