【发布时间】:2016-06-06 12:28:23
【问题描述】:
请我一直在尝试在 php pdo 中进行搜索,但是当我搜索时它不起作用,它只会显示我搜索的当前标题。 我一直在使用 MYSQL,但在我的页面顶部显示错误,但搜索得非常好,就像我想要的那样请有人可以为我或 MYSQLI 将此 Mysql 转换为 PDO,但我更喜欢 PDO,因为我更了解它
这是我的 PHP 使用 mysql 进行搜索
<?php require_once("_inc/dbcontroller.php"); $db_handle = new DBController();?>
<?php
if(isset($_GET['q'])){
$button = mysql_real_escape_string($_GET ['t']);
$search = mysql_real_escape_string($_GET ['q']);
$construct = "";
if(!$search)
echo 'The Query String field is required.';
else{
if(strlen($search)<=1)
echo 'The Query String is too short.';
else{
echo "You searched for <b>$search</b> <hr size='1'></br>";
mysql_select_db("your database name");
$search_exploded = explode (" ", $search);
foreach($search_exploded as $search_each){
$x =0; $x++;
if($x==1){$construct .="title LIKE '%$search_each%'";}
else {
$construct .="AND blog LIKE '%$search_each%' AND tags LIKE '%$search_each%'";
}
}
$construct ="SELECT * FROM blogtd WHERE $construct AND action = 'active'";
$run = mysql_query($construct);
$foundnum = mysql_num_rows($run);
if($foundnum==0)
echo "Sorry, there are no matching result for";
else{
echo "We've found match";
while($runrows = mysql_fetch_assoc($run)){
$title = $runrows ['title'];
$body = mysql_real_escape_string($runrows ['blog']);
?>
<div>
<?php
echo $title."<br/>";
echo $body;
?></div>
<?php
}
}
}
}
}
?>
这是我的数据库控制器,我将它保存在不同的文件夹中_inc/dbcontroller.php
<?php
class DBController {
//include('Define.php');
private $host = "localhost";
private $user = "root";
private $password = "12345";
private $database = "ServerDBsclab";
function __construct() {
$db_conn = $this->connectDB();
if(!empty($db_conn)) {
$this->selectDB($db_conn);
}
}
function connectDB() {
$db_conn = mysql_connect($this->host,$this->user,$this->password);
return $db_conn;
}
function selectDB($db_conn) {
mysql_select_db($this->database,$db_conn);
}
function runQuery($query) {
$result = mysql_query($query);
while($row=mysql_fetch_assoc($result)) {
$resultset[] = $row;
}
if(!empty($resultset))
return $resultset;
}
function numRows($query) {
$result = mysql_query($query);
$rowcount = mysql_num_rows($result);
return $rowcount;
}
function updateQuery($query) {
$result = mysql_query($query);
if (!$result) {
die('Invalid query: ' . mysql_error());
} else {
return $result;
}
}
function insertQuery($query) {
$result = mysql_query($query);
if (!$result) {
die('Invalid query: ' . mysql_error());
} else {
return $result;
}
}
function deleteQuery($query) {
$result = mysql_query($query);
if (!$result) {
die('Invalid query: ' . mysql_error());
} else {
return $result;
}
}
}
$db_conn = null;
?>
这是我尝试使用但无法正常工作的 php pdo,请帮助我,这样它就可以像上面的代码一样工作
<?php
if(isset($_GET['postid'])){
echo '<h5 style="color: #2f2f2f;">Search</h5><br/>';
$matchpost = $blog_title;
$button = mysql_real_escape_string($_GET['postid']);
$q = $blog_title;
$search_output = "";
// Prepare statement
$db_conn = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME,DB_USERNAME,DB_PASSWORD);
$db_conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$search = $db_conn->prepare("SELECT * FROM `blogtd` WHERE `blog` LIKE ?");
$search->execute(array("%$q%"));
foreach($search as $s){
$id = $s["BID"];
$title = $s["blog"];
$body = substr($s["body"], 0, 50);
$search_output .= '<article>
<header><a href="'.$id.'">
<h5>'.$title.'</h5>
</a></header>
<p>'.$body.'...</p></article>';
}
echo $search_output;
}
?>
【问题讨论】:
-
"有人可以为我或 MYSQLI 将此 Mysql 转换为 PDO,但我更喜欢 PDO,因为我更了解它" - Stack 不是转换服务。
-
我知道我只是想问是否有人可以帮助我使用 pdo 进行 php 搜索,这非常重要这是我最后一年的项目@Fred-ii-
-
您需要做的是:不要混合使用不同的 MySQL API。一旦你从连接到查询都使用了同一个,你就会成功。
-
@Fred-ii- 我不明白你的意思(不要混合不同的 MySQL API。一旦你从连接到查询使用了同一个,你就会成功)请如有必要,如果您给我解释代码,我将不胜感激
-
mysql_+ PDO = 没有爱。mysqli_+ PDO = 没有爱。mysql_+mysqli_= 没有爱 ;-)
标签: php mysql search mysqli pdo