Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.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
如何从mysql结果创建php数组、执行计算、使用数组、显示结果_Php_Mysql_Arrays_Sorting - Fatal编程技术网

如何从mysql结果创建php数组、执行计算、使用数组、显示结果

如何从mysql结果创建php数组、执行计算、使用数组、显示结果,php,mysql,arrays,sorting,Php,Mysql,Arrays,Sorting,我有一个照片网站,我正试图对MySQL数据库执行查询。该查询针对的是名为“title\u keyword”的“title”和“keyword”的串联字段。 我想获取搜索结果,并通过一个新形成的名为“sort_priority”的变量对其进行排序,该变量检查搜索词是否在“title”字段中。如果它在“标题”字段中,那么我想指定一个值1,如果不在标题字段中,那么指定一个值2。生成的数组将按“排序优先级”排序,并输出到屏幕 以下是我在PHP和MySQL中使用的逻辑: 1) 查询MySQL数据库并分配变

我有一个照片网站,我正试图对MySQL数据库执行查询。该查询针对的是名为“title\u keyword”的“title”和“keyword”的串联字段。 我想获取搜索结果,并通过一个新形成的名为“sort_priority”的变量对其进行排序,该变量检查搜索词是否在“title”字段中。如果它在“标题”字段中,那么我想指定一个值1,如果不在标题字段中,那么指定一个值2。生成的数组将按“排序优先级”排序,并输出到屏幕

以下是我在PHP和MySQL中使用的逻辑:

1) 查询MySQL数据库并分配变量。(这很好用)

2) 获取结果,将每个字段分配给一个变量,创建一个新变量,对返回的变量之一执行计算

$data_array=array();
// get each row
while($row = mysql_fetch_array($result))
{
//get data
$image_id = "{$row['image_id']}";
$title = "{$row['title']}";
$imageurl = "{$row['imageurl']}";


// Create sort_priority to identify if search word is in title field. 
//If it is then set to 1 to force this higher in the result list after sorting

$sort_priority = 2;
if(stristr($title,$search))
{ $sort_priority = 1;}
高于这一点的一切都是有效的。现在让我来说说我被难住的部分。如何在数组中创建和添加数据,然后对新的$sort\u优先级变量进行排序

这是我写的东西,但它根本不起作用**

// Create array and sort by title then keyword (tk_sort)
$data_array = array(
'image_id' => $image_id, 
'title' => $title, 
'imageurl' => $imageurl, 
'sort_priority' => $sort_priority);

// Obtain a list of columns
foreach ($data_array as $key => $row) {
    $image_id[$key]  = $row['image_id'];
    $title[$key] = $row['atitle'];
    $imageurl[$key]  = $row['imageurl'];
    $sort_priority[$key] = $row['sort_priority'];
}

// Sort the data with volume descending, edition ascending
// Add $data as the last parameter, to sort by the common key

array_multisort($sort_priority, SORT_ASC);

// end of array creation and sort
3) 将新排序的数组输出到表中


不知道如何从中获取数据。我必须使用循环还是什么?

你可以让MySQL来完成大部分工作。这应该有用(我自己没有试过):


嗯。

谢谢!我用了这个,不得不修改它一些工作。此外,该语句不能与IF语句中创建的搜索词字段一起使用。现在我想知道的是,是否有一种方法可以在搜索词中找到搜索值“your_search_value_here”,只要它是一个完整的单词,而不仅仅是一个字符串。有什么想法吗?
SELECT CONCAT_WS('-', `title`, `keyword`) AS search_term,
IF( INSTR(`search_term`, 'your_search_value_here') > 0, 1, 2 ) AS priority_key,
`image_id`, `imageurl`
FROM table_name_here
ORDER BY `priority_key`;