仅搜索部分数据库字符串时打印该字符串(通过PHP语句)

仅搜索部分数据库字符串时打印该字符串(通过PHP语句),php,mysql,Php,Mysql,我有一个输入类型的文本和提交作为搜索栏在我的网页上。我希望我的php脚本打印表中包含插入字符串的所有名称。当前,此脚本仅在文本输入中写入全名时打印信息。但我也希望它显示,如果它只是其中的一部分 private function search(){ if (isset($_POST['submit'])) { # Database connection $db = $this->db; $db->set_charset

我有一个输入类型的文本和提交作为搜索栏在我的网页上。我希望我的php脚本打印表中包含插入字符串的所有名称。当前,此脚本仅在文本输入中写入全名时打印信息。但我也希望它显示,如果它只是其中的一部分

private function search(){
      if (isset($_POST['submit'])) {
        # Database connection
          $db = $this->db;
          $db->set_charset('utf8');
        # check connection
          if (!$db) {
            echo "connection fail";
          }

        # HTML output (pt. 1)
        $output = '
          <table>
        ';

        # SQL query
        $q = '
        SELECT imeStud, prezStud
        FROM stud
        WHERE imeStud LIKE ?
        ';

        # process SQL query
        $search_input = $_POST['search'];
        if ($stmt = $db->prepare($q)) {
          $stmt->bind_param('s',$search_input);
          $stmt->bind_result($ime,$prezime);
          $stmt->execute();
          while ($stmt->fetch()) {
            $output .= '
              <tr><td>'.$ime.'</td><td>'.$prezime.'</td></tr>
            ';
          }
        }

        # HTML output (pt. 3)
        $output .= '</table>';
        echo $output;
      }

  }#endfunc(search())

你拥有最多的东西,只需在搜索词前后添加一个通配符

-        $search_input = $_POST['search'];
+        $search_input = '%' . $_POST['search'] . '%';


我替换了这两个参数,它返回我:致命错误:无法通过D:\Programs\XAMPP\htdocs\..…@Kuno中的引用传递参数2,我通常使用PDO。因为bind_param需要一个引用,所以这里不能使用concat表达式。我已经编辑了上面的答案,要么使用需要值的bind_result,要么在前面添加通配符。
-          $stmt->bind_param('s',$search_input);
+          $stmt->bind_result('s','%' . $search_input . '%');