1
我想索引和排列已查找的搜索項的列表。我有一個單獨的表在我的數據庫具有以下信息php,mysqli插入和搜索基於關閉一個值
_ID int Auto_Increment,
TERM varchar(255),
RANK int
的代碼我使用來獲取和顯示結果如下:
<?php
$q = $_GET['q'];
$DB_NAME = 'code_storage';
$DB_HOST = 'localhost';
$DB_USER = 'user';
$DB_PASS = 'pass';
try {
$dsn = "mysql:host=$DB_HOST;dbname=$DB_NAME";
$db = new PDO($dsn, $DB_USER, $DB_PASS);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$query = "SELECT * FROM `snippets` WHERE `CODE_NAME` LIKE :name1 OR `CODE_DESC` LIKE :name2 OR `CODE_TAGS` LIKE :name3 OR `CODE_USAGE` LIKE :name4";
$prep = $db->prepare($query);
$qpattern = "%" . $q . "%";
$prep->execute(array(":name1" => $qpattern, ":name2" => $qpattern, ":name3" => $qpattern, ":name4" => $qpattern));
echo '<div class="row">';
echo '<div class="panel">';
printf("Your search for <b>$q</b> returned %d records.\n", $prep->rowCount());
echo '</div>';
echo '</div>';
while ($row = $prep->fetch()) {
echo ' <div class="row">' . "\n";
echo ' <div class="large-12 columns">' . "\n";
echo ' <b><a href="results.php?id=' . $row['_ID'] . '">' . $row['CODE_NAME'] . '</a></b><br/><br/>' . "\n";
echo ' </div>' . "\n";
echo ' </div>' . '<br/>' . "\n";
$db = null;
}
}
catch (PDOException $e) {
echo '<div class="row">';
echo '<div class="panel">';
echo 'Connection failed: ' . $e->getMessage();
echo '</div>';
echo '</div>';
}
?>
我有1主要問題
- 如何將從$ q中抽取的搜索詞插入搜索表中
編輯:我想它我只是$查詢下,加入這個,現在它的工作原理
$search = "INSERT INTO `search` (`TERM`, `RANK`) VALUES (:search, 1) ON DUPLICATE KEY UPDATE `RANK` = `RANK` + 1";
$sprep =$db->prepare($search);
$sprep->execute(array(":search" => $q));
我不明白這個問題。我沒有看到任何引用「流行」表的代碼。您需要發佈導致您問題的代碼,而不是可用的代碼。 – Barmar
您的代碼可用於SQL注入。你使用的是mysqli,那你爲什麼不使用準備好的查詢呢? – Barmar
@ Barmar從來沒有嘗試過使用準備好的查詢,仍然學習sql和php會喜歡這樣做,但我想先讓它工作,然後我將學習如何進行準備好的語句 – ondrovic