我有这段代码:
PHP:
[CONNECT TO DATABASE OR DIE ( THIS WORKS )]
if(isset($_GET['search'])) // If it's submitted
{
$inp = Clean($_GET['inpname']); // Clean my input
$sQuery="SELECT name FROM user WHERE (id LIKE '%$inp%')"; // mySql query
$r = mysql_query($sQuery) or die(mysql_error());
if(mysql_affected_rows()===0) // If no match found
echo "{$inp} is not in our database.";
else
{
echo "<p>{$inp} was successfully searched.</p>"; // Yes, the query worked
while($row=mysql_fetch_array($r)) // Loop through the query results
echo "{$row[0]}<br>"; // Show the results
} // End of the else statement
} // End of the if statement
function Clean($str) // Clean my input
{
return mysql_real_escape_string(strip_tags(trim($sStr))); // Remove traces of injection
}
HTML:
<form name="form" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get">
<input name="inpname" type="text">
<input type="submit" name="search" value="Search">
</form>
我想通过ID在我的数据库中搜索成员但是当我搜索示例1时我没有结果:不在我们的数据库中。 (/index.php?inpname=1&search=Search)
如果我使用'%'。$ inp。“%'而不是'%$ inp%'它可以正常工作,但它向我展示了我数据库中的所有用户。
答案 0 :(得分:1)
如果你查看php手册说:
int mysql_affected_rows ([ resource $link_identifier = NULL ] )
通过与link_identifier关联的最后一次INSERT,UPDATE,REPLACE或DELETE查询获取受影响的行数。
http://php.net/manual/en/function.mysql-affected-rows.php
因此,如果使用SELECT进行查询,则不会返回值。
更改您的代码
if(isset($_GET['search'])) // If it's submitted
{
$inp = Clean($_GET['inpname']); // Clean my input
$sQuery="SELECT name FROM user WHERE id LIKE '%$inp%'"; // mySql query
$r = mysql_query($sQuery) or die(mysql_error());
if (mysql_num_rows($r))
{
while ($row=mysql_fetch_array($r))
{
echo $row['name']."<br>"; // Show the results
}
}
else
{
echo "{$inp} is not in our database.";
}
} // End of the if statement
如果你只想要一行
if(isset($_GET['search'])) // If it's submitted
{
$inp = Clean($_GET['inpname']); // Clean my input
$sQuery="SELECT name FROM user WHERE id LIKE '%$inp%' LIMIT 1"; // mySql query
$r = mysql_query($sQuery) or die(mysql_error());
if (mysql_num_rows($r))
{
$row=mysql_fetch_array($r)
echo $row['name']."<br>"; // Show the results
}
else
{
echo "{$inp} is not in our database.";
}
} // End of the if statement
如果您想按照确切的ID进行搜索
if(isset($_GET['search'])) // If it's submitted
{
$inp = Clean($_GET['inpname']); // Clean my input
$sQuery="SELECT name FROM user WHERE id = $inp LIMIT 1"; // mySql query
$r = mysql_query($sQuery) or die(mysql_error());
if (mysql_num_rows($r))
{
$row=mysql_fetch_array($r)
echo $row['name']."<br>"; // Show the results
}
else
{
echo "{$inp} is not in our database.";
}
} // End of the if statement
答案 1 :(得分:0)
我发现,如果你这样做,用LIKE搜索会发挥最佳效果:
id LIKE '%$inp%' OR id LIKE '%$inp' OR id LIKE '$inp%' OR id = '$inp'
因为%表示必须至少有一个符号。因此,%1%找不到1
,但会找到417
。至少这对我有用:)