A. php数组索引

不可以的!一个元素,只能有唯一的索引,要么数字要么字符串
不过在同一个数组中,可以存在不同的元素,分别使用数字索引和字符串索引

B. php决定着一个表是如何存储和索引数据

你这个问题我有些没看懂。。。php或者其他程序语言,通过连接数据库执行sql语句存入想要存入的数据,索引是建表时在数据库添加的,当然也可以通过php来实现。

C. php sql 全文检索

多个条件的SQL语句,条件之间使用AND、OR链接起来就可以了,例如:
SELECT * FROM 表表 WHERE 姓名='XXX' AND 年龄=99 AND 性别='不男不女'

D. 在用php添加搜索框,求代码

建立一个表单
连接数据库
选择数据库
选择表
执行sql语句 sql="select 字段名 from 表名 where 字段名2 like 表单传的值";
这里表单传的值即为“检索词”
这是最基本的查询
如果需要改变“字段名2”的字段,可以在表单加个下拉框,提交的时候一起传过来

更复杂的查询要涉及到2表的联合,这个比较麻烦

希望对楼主有帮助

E. php sphinx 搜索 多表联查速度怎么样

使用Elasticsearch和solr一样,使用lucene
这个和php无关,因为无论哪个工具,都是通过网络接口查询,所以我不回答有关是否适合php的情况~~

## ES 缺点
基于java,会有一些java的常见问题需要注意,比如gc
单纯执行速度上比C写的sphinx慢

## sphinx 优点
纯粹,没有什么花哨的其他功能
C写的,速度快
新版本加了分布式、动态更新索引等功能

## 下面列举Es比sphinx优秀的部分
1、部署简单,虽然sphinx部署也挺简单,但是在书写配置的时候,你会发现,sphinx的配置是要写好后,重启sphinx,而Elasticsearch针对某个索引的配置,是可以动态写入的。
2、调试简单,sphinx有命令行工具可以调试,而Elasticsearch使用的是http接口进行调试,不需要专门的API类,几行php代码就可以写一个Elasticsearch的API。
3、可视化工具比较多,有收费的,也有的,比如kibana head marvel。
4、提供结构化的JSON查询语句,易读性强
5、Es可以保留源数据(可选),也就是说,你可以不需要mysql的支持,就可以完成整个搜索过程,即使你不需要这个功能,在调试的时候,还是让人感到非常便利,不用将查询结果到数据库匹配一下。
6、Es可以动态更新全文索引,动态更新单个记录,而不像sphinx一样需要重建全部
7、对UTF8的支持是不需要单独配置的

## 从中文分词上来说
首先我觉得分词最重要的基本都是词库,分词算法两个工具基本都可以使用。
lucene 支持很多分词工具,比如
word
比如ik
这两个工具最近都很活跃,因为Es更新2.0 和 2.1

比较分词区别(sphinx可能有误):
sphinx分词 我不太熟悉它的机制,多数情况下我使用scws分词,发送给sphinx,然后设置匹配规则,比如最大匹配(我基本都是基于模糊匹配在用sphinx)

Es的全文索引是基于分词的,也就是事先分好词,每个词对应某些记录,自动进行TF/IDF的运算,得到一个评分后返回,当然这个评分可以改(sphinx同样支持修改评分),这种检索方式肯定更快,但是受到分词限制,所以我每个字也分词,然而这样可能影响分数判断。

另一方面ES也支持类似sphinx的匹配方式,叫做fuzzy,模糊匹配,一般会一起使用,一个词不在分词库中的时候,就用fuzzy,所以Es在功能上,应该和sphinx不会有太多差别,而且应该要更多。

## 个人方面
我在使用shpinx的时候,会查3次,一次完全按照用户输入的查(如果用户没有输入空格),一次按照空格分开查或者分词系统分词结果查,一次按照单个字来查(前提是前面两个结果太少)。

在用Es的时候,如果没有办法正确分词,会按照fuzzy + 单字查(可以同时进行),如果有办法分词,按照分词结果 + 单字查(可以同时)

## 后期维护上:
sphinx的配置文件在mysql分表之后,维护起来是比较麻烦的,你可以用php脚本当做配置文件,这样会好很多。
Es的索引是可以主动发给它去建立的(通过http接口),分表之后,它不关心数据库状态和结构。新增字段可以热更新。

## 扩展性上:
Es和sphinx都支持分布式索引,扩展性都没有问题
两者都支持别名,Es的别名加上动态建立索引,使得更换索引结构或者重建索引后,支持0宕机时间。而sphinx的rotate选项可以动态更新索引(不知道能不能动态创建索引,因为sphinx我在使用的时候,索引都要求写在配置文件里。
性能方面没有测试数据。从直观感受上sphinx要快一些。

F. php mysql 索引如何操作

你需要在test1表中的id设置为主键然后在表中加入userid设置为非空 ,然后进行两个表的关联,
SQL语句为:eg:

"select * from test as A,test2 as B where A.userd=B.id and A.userid='临时会员'";
应该是这样地!你可以按这把你的给修改一下,如果你感觉对你有帮助请给好评!

G. PHP下拉列表菜单SELECT选定对应项后检索数据库显示数据问题

option里面少了value ,当选择了这个的时候得到这个value,使用ajax到后台去查询这个ID的值,返回这个前端,对应展示就行了

H. 如何使用PHP实现全文检索功能

1、新建数据表:CREATE TABLE fulltext_sample( TEXT,FULLTEXT()) TYPE=MyISAM;这里的就是一个fulltext类型的字段,如果建表的时候没有添加全文检索字段,也可以通过alert来添加,如:ALTER TABLE fulltext_sample ADD FULLTEXT()
2、插入数据:INSERT INTO fulltext_sample VALUES('It appears good from here'),('The here and the past'),('Why are we hear'),('An all-out alert'),('All you need is love'),('A good alert');
3、数据检索:SELECT * FROM fulltext_sample WHERE MATCH() AGAINST('love');上面就是mysql的全文检索功能,注意:在全文索引上进行搜索是不区分大小写的。下面再看如何实现中文全文检索。fulltext字段是以词语为单位,词语之间需要用空格隔开,而汉语的句子中各个词语之间并不会用空格隔开,因此我们需要对中文进行分词,这也就是为什么上面需要强词用到中文分词扩展模块。但是尽管对中文进行分词,MYSQL还是不能通过MATCH来实现中文的全文检索,这需要通过一定的方法来进行转换,一个比较简单实用的方法是采用下面这个函数(当然还有更好的),它将中文进行了urlencode转换。function q_encode($str){$data = array_filter(explode(" ",$str));$data = array_flip(array_flip($data));foreach ($data as $ss) {if (strlen($ss)>1 )$data_code .= str_replace("%","",urlencode($ss)) . " ";}$data_code = trim($data_code);return $data_code;}将转换过后的内容保存至事先定义好的fulltext字段。同样,在查询的时候也需要将查询的关键词进行同样方法的转换。

I. 查询mysql数据库中所有表名

使用select命令,可以查询所有表名

写法如下:

selecttable_namefrominformation_schema.tableswheretable_schema='当前数据库'

(9)php索表扩展阅读

其它用法

1、使用SHOW语句找出在服务器上当前存在什么数据库:

mysql> SHOW DATABASES;

2、创建一个数据库MYSQLDATA

mysql> CREATE DATABASE MYSQLDATA;

3、选择你所创建的数据库

mysql> USE MYSQLDATA; (按回车键出现Database changed 时说明操作成功!)

4、查看现在的数据库中存在什么表

mysql> SHOW TABLES;

5、创建一个数据库表

mysql> CREATE TABLE MYTABLE (name VARCHAR(20), sex CHAR(1));

6、显示表的结构:

mysql> DESCRIBE MYTABLE;

7、往表中加入记录

mysql> insert into MYTABLE values (”hyq”,”M”);

8、用文本方式将数据装入数据库表中(例如D:/mysql.txt)

mysql> LOAD DATA LOCAL INFILE “D:/mysql.txt” INTO TABLE MYTABLE;

9、导入.sql文件命令(例如D:/mysql.sql)

mysql>use database;

mysql>source d:/mysql.sql;

J. php如何根据数据表字段索引来判断是否添加字段

不要用mysql_fetch_object()这个函数来判断,这个返回来的是个数组;一般情况下是这么来判断的:$query="select * from ".$tablepre."common_members"." where username ='".$_POST['reg_username']."'";$result=mysql_query($query,$link);$num = mysql_num_rows($result); //取得结果集中行的数目if($num){echo '<script type="text/javascript">alert("用户名已被占用 ,请重新输入!");location.replace("../reg/index.php");</script>';die();}