我已经编写了一些代码来搜索数据库中输入的内容,但它只显示一个白色屏幕。我仍然不确定使用OO,所以也许这是查询?我尝试了几种不同的方法,但同样的白色屏幕。必须是显而易见的东西才需要另一双眼睛。
与数据库的连接工作正常,因此它不是问题而且$ POST值是正确的。
的search.php
<?php
session_start();
include 'searchform.php'
include 'pagetemplate.php';
if(isset($_POST['searchsubmit'])){
$name=$_POST['name'];
if ($stmt = $connection->prepare ("SELECT * FROM users WHERE FirstName LIKE ? OR LastName LIKE ? OR Username LIKE ?"))
{
$stmt->bind_param('sss', $name, $name, $name);
$stmt->execute();
$stmt->bind_result($personresult);
$stmt->fetch();
printf($personresult);
}
else
{
echo "<p>Please enter a search query</p>";
}
}
}
?>
答案 0 :(得分:0)
你有一个额外的}
,试试这个......
<?php
session_start();
include 'searchform.php'
include 'pagetemplate.php';
if(isset($_POST['searchsubmit']))
{
$name=$_POST['name'];
if ($stmt = $connection->prepare ("SELECT * FROM users WHERE FirstName LIKE ? OR LastName LIKE ? OR Username LIKE ?"))
{
$stmt->bind_param('sss', $name, $name, $name);
$stmt->execute();
$stmt->bind_result($personresult);
$stmt->fetch();
printf($personresult);
}
else
{
echo "<p>Please enter a search query</p>";
}
} else
echo "NOT SET!";
?>
答案 1 :(得分:-1)
可能有很多东西,但这可能是进行搜索的理想方式。确保始终使用addslashes()来防止SQL注入。
$selectStmt = "SELECT * FROM users WHERE (FirstName LIKE '%".addslashes($_POST['searchquery']) ."%') OR (LastName LIKE '%".addslashes($_POST['searchquery']) ."%') OR (Username LIKE '%".addslashes($_POST['searchquery']) ."%')";
$result = mysql_query($selectStmt);
while($row = mysql_fetch_assoc($result)) print_r($row);
正如其他人所提到的,while页面可能是语法错误,或者在关闭错误报告时出现其他错误。如果您还没有启用错误报告。
如果仍然无效 - 请回显上面的$ selectStmt并尝试在phpMyAdmin中打印输出。 MySQL将为您提供更有意义的更正。
编辑:显然我的方法有点过时,但功能不逊色。这是使用MySQLi对象的备用版本。您还可以使用mysql_real_escape_string()代替$ selectStmt中的addslashes(),以获得更适合该任务的内容。
$dbConnection = new mysqli($host, $user, $password, $name);
if ($result = $dbConnection->query($selectStmt)) {
while($row = $result->fetch_assoc()) { print_r($row); }
}