Php 用LIKE语句搜索MySQL数据库
我需要返回数据库中用户的搜索结果 目前,我已经设法在MySQL查询中使用LIKE函数来返回结果计数,但我需要它来回显所有结果的用户名,而不仅仅是第一个结果:Php 用LIKE语句搜索MySQL数据库,php,html,mysql,search,sql-like,Php,Html,Mysql,Search,Sql Like,我需要返回数据库中用户的搜索结果 目前,我已经设法在MySQL查询中使用LIKE函数来返回结果计数,但我需要它来回显所有结果的用户名,而不仅仅是第一个结果: <?php // mysql details $host="localhost"; // Host name $username="classified"; // Mysql username $password="classified"; // Mysql password $db_na
<?php
// mysql details
$host="localhost"; // Host name
$username="classified"; // Mysql username
$password="classified"; // Mysql password
$db_name="jaycraftcommunity"; // Database name
$tbl_name="members"; // Table name
// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
// form variable to local
$search = $_POST['username'];
// make query
//$sql = "SELECT * FROM $tbl_name WHERE (username='$search' OR verified='$search')"; // sql query
$sql = "SELECT username FROM $tbl_name WHERE username LIKE '%$search%'"; // sql query
$result = mysql_query($sql); // do query
// handle query data
$count = mysql_num_rows($result);
$row = mysql_fetch_row($result);
$array = mysql_fetch_array($result);
echo $count;
foreach( $row as $arrays ): ?>
<tr>
<td><?php echo htmlspecialchars( $arrays ); ?></td>
<br />
</tr>
<?php
endforeach;
?>
您需要在行中进行while循环:
while($row = mysql_fetch_array($result){
foreach( $row as $cell): ?>
<tr>
<td><?php echo htmlspecialchars( $cell); ?></td>
<br />
</tr>
<?php
endforeach;
?>
}
while($row=mysql\u fetch\u数组($result){
foreach($行作为$单元格):?>
}
mysql\u-fetch\u-row
和mysql\u-fetch\u-array
几乎是唯一的函数,它们都从结果集中获取下一行。您可以使用mysql\u-fetch\u-assoc
以数据库列名为键获取值。(建议这样做)每次调用mysql\u-fetch\u-row($result)
将返回另一行并前进光标。只需使用while()循环结果中的所有行:
while($row = mysql_fetch_row($result)) {
echo $row[0];
}}
为了便于使用,最好使用mysql\u fetch\u assoc($result);
返回关联数组:
while($row = mysql_fetch_assoc($result)) {
echo $row['username'];
}}
你可以
<?php
$sql = mysql_query($sql);
while($row = mysql_fetch_assoc($sql)){
echo $row['username'].'<br />';
}
?>
但是请使用mysqli而不是mysql!当您使用prepare行时,上述解决方案不起作用,因为替换符号与like符号相同。请尝试在prepare中创建搜索参数,将其预格式化为字符串。然后通过foreach或for循环遍历可用行
$Table_Name = $wpdb->prefix.'tablename';
$SearchField = '%'. $YourVariable . '%';
$sql_query = $wpdb->prepare("SELECT * FROM $Table_Name WHERE ColumnName LIKE %s", $SearchField) ;
$rows = $wpdb->get_results($sql_query, ARRAY_A);
if(!empty($rows))
{
$TotalRows = $wpdb->num_rows;
foreach($rows as $row)
{
echo $row['field name'];
}
}而($row=mysql\u fetch\u array()){//output results here}
。此外,您可以直接在查询中使用输入的POST
值进行SQL注入。他只需检索SELECT
中的一列,无需使用您拥有的内部foreach
循环,只需$row['username']
是必需的。
$Table_Name = $wpdb->prefix.'tablename';
$SearchField = '%'. $YourVariable . '%';
$sql_query = $wpdb->prepare("SELECT * FROM $Table_Name WHERE ColumnName LIKE %s", $SearchField) ;
$rows = $wpdb->get_results($sql_query, ARRAY_A);
if(!empty($rows))
{
$TotalRows = $wpdb->num_rows;
foreach($rows as $row)
{
echo $row['field name'];
}