PHP-MySQL搜索引擎&;按html显示行<;输入>;
我有一个HTML表单,如:PHP-MySQL搜索引擎&;按html显示行<;输入>;,php,mysql,Php,Mysql,我有一个HTML表单,如: <form action = "get-row.php" method = "post" > <input type = "text" name = "mess_username" /> <input type = "submit" name = "submit" /> </form> 当前检查后我的最终“确定”代码: $sql = " SELECT * FROM messbd
<form action = "get-row.php" method = "post" >
<input type = "text" name = "mess_username" />
<input type = "submit" name = "submit" />
</form>
当前检查后我的最终“确定”代码:
$sql = " SELECT * FROM messbd WHERE mess_username= '$search' ";
$run = mysql_query($sql);
$foundnum = mysql_num_rows($run);
if ($foundnum == 0) {
echo "Sorry, there are no matching result for <b> $search </b>";
}
else {
echo "$foundnum results found !<p>";
while ($runrows = mysql_fetch_assoc($run)) {
$mess_username = $runrows ['mess_username'];
$mess_email = $runrows ['mess_email'];
$android_app = $runrows ['android_app'];
echo " $mess_username <br> $mess_email <br> $android_app ";
}
}
$sql=“从messbd中选择*,其中mess\u用户名='$search';
$run=mysql\u查询($sql);
$foundnum=mysql\u num\u行($run);
如果($foundnum==0){
echo“对不起,$search没有匹配的结果”;
}
否则{
echo“$foundnum结果已找到!”;
而($runrows=mysql\u fetch\u assoc($run)){
$mess_username=$runrows['mess_username'];
$mess_email=$runrows['mess_email'];
$android_app=$runrows['android_app'];
echo“$mess\u用户名
$mess\u电子邮件
$android\u应用程序”;
}
}
问题是,我得到的信息是,“没有匹配的结果!”那么那里的更正是什么呢
现在问题解决了&上面的代码已更新。谢谢。通过此查询,mysql将搜索$search输入,而不是var的relarive值。尝试使用单引号。通过此查询,mysql将搜索$search输入,而不是var的relarive值。尝试使用单引号。因为您的
$search
结果将是一个字符串,然后需要在查询中引用该变量。我很确定您正在数据库中查找字符串,看到echo“您没有提交关键字”
和mess_用户名
作为用户的“名称”
假设完全匹配。如果你正在寻找与你的搜索相似的东西,说你正在寻找“脚”并想找到“足球”,然后使用LIKE
或die(mysql_error())
添加到mysql_query()
中,以防在查询变量中不引用字符串时出现错误
脚注:
您当前的代码对用户开放。使用,或与
另外,最好对输入使用条件
empty()
即:
如果有人只是单击而不输入任何内容,这可能会给您带来错误。因为您的
$search
结果将是一个字符串,那么您需要在查询中引用该变量。我很确定您正在数据库中查找字符串,看到echo“您没有提交关键字”
和mess_用户名
作为用户的“名称”
假设完全匹配。如果你正在寻找与你的搜索相似的东西,说你正在寻找“脚”并想找到“足球”,然后使用LIKE
或die(mysql_error())
添加到mysql_query()
中,以防在查询变量中不引用字符串时出现错误
脚注:
您当前的代码对用户开放。使用,或与
另外,最好对输入使用条件
empty()
即:
如果有人只是点击而不输入任何内容,这可能会给您带来错误。您没有引用您的搜索词
$sql = 'SELECT * FROM messbd WHERE mess_username="' . mysql_real_escape_string($search) . '"';
但是mysql扩展已弃用,应该用PDO或mysqli替换。下面是一个PDO和prepared语句的示例:
$options = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION);
$dbh = new PDO('mysql:host=server;dbname=my_db', 'user', 'pass', $options);
$sql = 'SELECT * FROM messbd WHERE mess_username=?';
$sth = $pdo->prepare($sql);
$sth->execute(array($search));
// there is no sure working rowCount, so fetch all and count
$rows = $sth->fetchAll(PDO::FETCH_ASSOC)
if (!$rows) {
echo "Sorry, there are no matching result for <b> $search </b>";
} else {
echo count($rows) . " results found !<p>";
foreach ($rows as $row) {
$mess_username = $row['mess_username'];
$mess_email = $row['mess_email'];
$android_app = $row['android_app'];
echo "$mess_username<br>$mess_email<br>$android_app";
}
}
$options=array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_异常);
$dbh=newpdo('mysql:host=server;dbname=my_db','user','pass',$options);
$sql='从messbd中选择*,其中mess_username=?';
$sth=$pdo->prepare($sql);
$sth->execute(数组($search));
//没有确定的工作行数,因此获取所有行数并计数
$rows=$sth->fetchAll(PDO::FETCH_ASSOC)
如果(!$行){
echo“对不起,$search没有匹配的结果”;
}否则{
回声计数($rows)。“找到结果!”;
foreach($行作为$行){
$mess_username=$row['mess_username'];
$mess_email=$row['mess_email'];
$android_app=$row['android_app'];
echo“$mess\u用户名
$mess\u电子邮件
$android\u应用程序”;
}
}
您没有引用搜索词
$sql = 'SELECT * FROM messbd WHERE mess_username="' . mysql_real_escape_string($search) . '"';
但是mysql扩展已弃用,应该用PDO或mysqli替换。下面是一个PDO和prepared语句的示例:
$options = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION);
$dbh = new PDO('mysql:host=server;dbname=my_db', 'user', 'pass', $options);
$sql = 'SELECT * FROM messbd WHERE mess_username=?';
$sth = $pdo->prepare($sql);
$sth->execute(array($search));
// there is no sure working rowCount, so fetch all and count
$rows = $sth->fetchAll(PDO::FETCH_ASSOC)
if (!$rows) {
echo "Sorry, there are no matching result for <b> $search </b>";
} else {
echo count($rows) . " results found !<p>";
foreach ($rows as $row) {
$mess_username = $row['mess_username'];
$mess_email = $row['mess_email'];
$android_app = $row['android_app'];
echo "$mess_username<br>$mess_email<br>$android_app";
}
}
$options=array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_异常);
$dbh=newpdo('mysql:host=server;dbname=my_db','user','pass',$options);
$sql='从messbd中选择*,其中mess_username=?';
$sth=$pdo->prepare($sql);
$sth->execute(数组($search));
//没有确定的工作行数,因此获取所有行数并计数
$rows=$sth->fetchAll(PDO::FETCH_ASSOC)
如果(!$行){
echo“对不起,$search没有匹配的结果”;
}否则{
回声计数($rows)。“找到结果!”;
foreach($行作为$行){
$mess_username=$row['mess_username'];
$mess_email=$row['mess_email'];
$android_app=$row['android_app'];
echo“$mess\u用户名
$mess\u电子邮件
$android\u应用程序”;
}
}
可能只有messbd
数据库的名称吗?我想你的意思可能是messdb?@JeremyHarris是的messbd
是我的数据库的名称。谢谢。请尝试使用mysql\u error
检查错误,或者简单地检查$foundnum
vriable中包含的内容。如果您的查询没有问题,我想您必须将DB结构添加到问题中。在您的查询中也使用mysql\u real\u escape\u string
,我认为手动文章可能对您有用。$search
结果是字符串吗?看起来像是“关键字”。可能什么都没有,但messbd
是您数据库的名称吗?我想你的意思可能是messdb?@JeremyHarris是的messbd
是我的数据库的名称。谢谢。请尝试使用mysql\u error
检查错误,或者简单地检查$foundnum
vriable中包含的内容。如果您的查询没有问题,我想您必须将DB结构添加到问题中。在您的查询中使用mysql\u real\u escape\u string
,$sql
,我认为手动
$sql = 'SELECT * FROM messbd WHERE mess_username="' . mysql_real_escape_string($search) . '"';
$options = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION);
$dbh = new PDO('mysql:host=server;dbname=my_db', 'user', 'pass', $options);
$sql = 'SELECT * FROM messbd WHERE mess_username=?';
$sth = $pdo->prepare($sql);
$sth->execute(array($search));
// there is no sure working rowCount, so fetch all and count
$rows = $sth->fetchAll(PDO::FETCH_ASSOC)
if (!$rows) {
echo "Sorry, there are no matching result for <b> $search </b>";
} else {
echo count($rows) . " results found !<p>";
foreach ($rows as $row) {
$mess_username = $row['mess_username'];
$mess_email = $row['mess_email'];
$android_app = $row['android_app'];
echo "$mess_username<br>$mess_email<br>$android_app";
}
}