好的,那么短暂而甜蜜。 我的数据库中有一个字段是LONGTEXT。该字段通常在每个字段中有大约2,000行文本。
我需要做的是,通过这个LONGTEXT字段并取出输入内容的行。 (对不起,我解释事情太可怕了)
例如,我最初使用的是.txt文件,但我认为MySQL是一种更容易的方式,因为我有一些经验。我有这个代码。
function searchcode($search)
{
$count = '0';
$lines = file('file.txt');
foreach($lines as $line)
{
if(strpos($line, $search) !== false)
{
echo "<tr><td>" . $line . "</td></tr>";
$count++;
}
}
echo "<tr><td style='border-top: 2px solid #000;'>$search was taken a total of $count times.</td></tr>";
}
CODE FOR SEARCHING FOR: searchcode("Camera");
这将查看我想要的.txt文件,并根据$ search的显示行。我想要这个,但使用MySQL。
在这个例子中,我正在寻找相机。它会查看.txt文件和繁荣,每一行都会显示相机中的单词。 (显然它的数量。)
让这个晶莹剔透:我正在寻找能够搜索文本字段的东西。然后根据某个单词显示结果。
我已经知道了LIKE语法,但我对如何使用它没有实际的想法!
我想要的例子
[ - 数据库 - ]
ID --------- ---------日期信息
1 --------- 3-4-2012 ----相机已被删除。夹克已被删除。相机已被添加。
[ - MySQL Page - ]
MySQL Code Here
[ - 网页 - ]
相机已被删除。
已添加相机。
答案 0 :(得分:0)
使用此查询。
SELECT ROUND((LENGTH(`column_name`) - LENGTH(REPLACE(`column_name`, 'search_keyword', '')))/LENGTH('search_keyword')) FROM table
例如,如果表格中有“详细信息”列
id details
1 this is one of the best product in the india
如果我们想匹配并找到“详细信息”列中文本“the”的计数,则使用此查询
SELECT ROUND((LENGTH(`details`) - LENGTH(REPLACE(`details`, 'the', '')))/LENGTH('the')) as count FROM table
输出:
count = 3
答案 1 :(得分:0)
您需要做的第一件事是确保在服务器上安装并配置了mysql-server,mysql-client,php-mysql和php-mysqli,我还建议使用PhpMyAdmin进行友好操作mysql管理。
创建实际表格:
CREATE TABLE code (
id int(11) not null auto_increment,
file longtext,
primary key(id)
)
下一步是选择mysql访问方法,可以选择mysqli or pdo
以下示例将向您展示如何使用mysqli执行此操作:
class db{
function query($query, $show_error=true)
{
$time_before = $this->get_real_time();
if(!$this->db_id) $this->connect(DBUSER, DBPASS, DBNAME, DBHOST);
if(!($this->query_id = mysqli_query($this->db_id, $query) )) {
$this->mysql_error = mysqli_error($this->db_id);
$this->mysql_error_num = mysqli_errno($this->db_id);
if($show_error) {
$this->display_error($this->mysql_error, $this->mysql_error_num, $query);
}
}
$this->MySQL_time_taken += $this->get_real_time() - $time_before;
$this->query_num ++;
return $this->query_id;
}
function get_array($query_id = '')
{
if ($query_id == '') $query_id = $this->query_id;
return mysqli_fetch_array($query_id);
}
function display_error($error, $error_num, $query = '')
{
if($query) {
// Safify query
$query = preg_replace("/([0-9a-f]){32}/", "********************************", $query); // Hides all hashes
$query_str = "$query";
}
echo '<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>MySQL Fatal Error</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<style type="text/css">
<!--
body {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 10px;
font-style: normal;
color: #000000;
}
-->
</style>
</head>
<body>
<font size="4">MySQL Error!</font>
<br />------------------------<br />
<br />
<u>The Error returned was:</u>
<br />
<strong>'.$error.'</strong>
<br /><br />
</strong><u>Error Number:</u>
<br />
<strong>'.$error_num.'</strong>
<br />
<br />
<textarea name="" rows="10" cols="52" wrap="virtual">'.$query_str.'</textarea><br />
</body>
</html>';
exit();
}
}
define ("DBHOST", "localhost");
define ("DBNAME", "DBNAME");
define ("DBUSER", "DBUSER");
define ("DBPASS", "PASS");
define ("PREFIX", "PREFIX");
define ("USERPREFIX", "USERPREFIX");
define ("COLLATE", "utf8");
$db = new db;
现在您已准备好访问mysql
插入一些数据:
$db->query("INSERT INTO code (code) VALUES('{$text}')");
从代码中选择:
$row=$db->query("SELECT * FROM code WHERE file LIKE '%{$search}%'");
while($row=$db->get_array()){
/* your original code */
foreach($row['text'] as $line){
if(strpos($line, $search) !== false){
echo "<tr><td>" . $line . "</td></tr>";
$count++;
}
}
}