php通过mysql like搜索关键词查询,所有符合数据遍历出来

php通过mysql like搜索关键词查询,所有符合数据遍历出来,第1张

<php

$host="localhost";

$username="root";

$password="root";

$db="db4"; //库名

$mysql_table="person"; //表名

//连接数据库,面向过程

$conn=mysqli_connect($host,$username,$password);

if(!$conn){

echo "数据库连接失败";

exit;

}

//选择所要 *** 作的数据库

mysqli_select_db($conn,$db);

//设置数据库编码格式

mysqli_query($conn,"SET NAMES UTF8");

//编写sql获取分页数据 SELECT FROM 表名 LIMIT 起始位置,显示条数

//注意:以下id,name,age,say都是字段节点名,person是表名,db4是数据库名,think是指定的关键字

$sql = 'SELECT id, name, age, say

FROM person

WHERE say LIKE "%think%" order by id ASC LIMIT '($page-1)$pageSize ",{$pageSize}";

// 节点名 关键字 节点名 可指定数量limit后可写一个指定的数字

//$sql="select from $mysql_table"

//把sql语句传送到数据库

$result=mysqli_query($conn,$sql);

//将数据显示到table中,并未table设置格式

echo "<div class='content'>";

echo "<table border=1 cellspacing=0 width=30% align=center>";

echo "<tr><td>ID</td><td>NAME</td><td>say</td></tr>";

while ($row = mysqli_fetch_assoc($result)) {

echo "<tr>";

echo "<td>{$row['id']}</td>";

echo "<td>{$row['name']}</td>";

echo "<td>{$row['say']}</td>";

echo "<tr>";

}

echo "</table>";

echo "</div>";

//释放结果

mysqli_free_result($result);

//关闭数据库

mysqli_close($conn);

问题出在mysql_fetch_array这一步,此方法的第二个参数表示你要获取的数组的类型

MYSQL_ASSOC 关联数组,就是键名是id,name的

MYSQL_NUM 索引数组,键名是数字的

MYSQL_BOTH 以上两种都有

不给第二个参数的话,默认是MYSQL_BOTH,所以就出现了你上面的结果

--传入id,输出name和sex的存储过程,这里同个id有多条数据,所以需要用到游标。

DELIMITER //

CREATE PROCEDURE p5(IN v_id INT)

BEGIN

DECLARE nodata INT DEFAULT 0;#注意:这个变量声明必须放在游标声明前面

DECLARE v_name VARCHAR(30);

DECLARE v_sex CHAR(3);

DECLARE c_ns CURSOR FOR SELECT NAME,sex FROM t WHERE id = v_id;

DECLARE EXIT HANDLER FOR NOT FOUND SET nodata = 1;#当读到数据的最后一条时,设置变量为1

OPEN c_ns;

WHILE nodata = 0 DO#判断是不是到了最后一条数据

FETCH c_ns INTO v_name,v_sex;

SELECT v_name,v_sex,nodata;

END WHILE;

CLOSE c_ns;

END

//

--执行该存储过程

mysql> call p5(2);

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

+--------+-------+--------+

| v_name | v_sex | nodata |

+--------+-------+--------+

| song | 女 | 0 |

+--------+-------+--------+

1 row in set (004 sec)

+--------+-------+--------+

| v_name | v_sex | nodata |

+--------+-------+--------+

| dan | 男 | 0 |

+--------+-------+--------+

1 row in set (005 sec)

Query OK, 0 rows affected, 1 warning (005 sec)

--注意:CONTINUE 会继续当前的block 中的语句, 它在set done=1 后继续执行下一个语句。EXIT 则在 set done=1 后离开当前的语句块

所以这里用了EXIT(**阴影部分)

如果是continue,结果如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

mysql> call p5(2);

-> //

+--------+-------+

| v_name | v_sex |

+--------+-------+

| song | 女 |

+--------+-------+

1 row in set (000 sec)

+--------+-------+

| v_name | v_sex |

+--------+-------+

| dan | 男 |

+--------+-------+

1 row in set (001 sec)

+--------+-------+

| v_name | v_sex |

+--------+-------+

| dan | 男 |

+--------+-------+

1 row in set (002 sec)

Query OK, 0 rows affected, 1 warning (003 sec)

<php

$mysql_server = "127001";

$mysql_username = "root";

$mysql_password = "";

$mysql_dbname = "a";

if (isset($_GET['username']) && !empty($_GET['username'])) {

$con = mysql_connect($mysql_server, $mysql_username, $mysql_password) or die ('Could not connect to mysql server!');

mysql_select_db($mysql_dbname) or die('Could not select database!');

$username = $_GET['username'];

$sql = "SELECT 表列名 FROM b";

$arrays=mysql_fetch_assoc(mysql_query($sql));

foreach($arrays['列名'] as $v) { echo $v" "; }

mysql_close($con);

}

>

以上就是关于php通过mysql like搜索关键词查询,所有符合数据遍历出来全部的内容,包括:php通过mysql like搜索关键词查询,所有符合数据遍历出来、发现PHP查询MYSQL,遍历结果,会出现2倍数据(数据库1行数据2列,遍历输出4列)、mysql里怎样循环遍历游标等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9859575.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存