Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 用LIKE语句搜索MySQL数据库_Php_Html_Mysql_Search_Sql Like - Fatal编程技术网

Php 用LIKE语句搜索MySQL数据库

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

我需要返回数据库中用户的搜索结果

目前,我已经设法在MySQL查询中使用LIKE函数来返回结果计数,但我需要它来回显所有结果的用户名,而不仅仅是第一个结果:

<?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'];
     }