wampserver 环境 mysql保存正则表达式到表中 到取出来用时始终匹配不上 但手动在php代码中打上去却没问题
字段类型:utf8_general_ciutf8mb4_general_ci都试过了还是不行正则内容如下:/(mjid|dkid)=([0-9]+)&(scid|plid...
字段类型:utf8_general_ci utf8mb4_general_ci 都试过了 还是不行
正则内容如下 :/(mjid|dkid)=([0-9]+)&(scid|plid)=([0-9a-zA-Z]+)/
当没有&字符的时候:如:/(mjid|dkid)=([0-9]+)/ 没问题 可以匹配
所以估计是&这个特殊字符的问题了 求解
像这样:$reg1 = "/(mjid|dkid)=([0-9]+)&(scid|plid)=([0-9a-zA-Z]+)/"; 这个放去匹配没问题,但$reg2 = 数据库取到的结果(同$reg1的字符一样);
打印 $reg1 和 $reg2 字符完全一样 $reg2却不能匹配 展开
正则内容如下 :/(mjid|dkid)=([0-9]+)&(scid|plid)=([0-9a-zA-Z]+)/
当没有&字符的时候:如:/(mjid|dkid)=([0-9]+)/ 没问题 可以匹配
所以估计是&这个特殊字符的问题了 求解
像这样:$reg1 = "/(mjid|dkid)=([0-9]+)&(scid|plid)=([0-9a-zA-Z]+)/"; 这个放去匹配没问题,但$reg2 = 数据库取到的结果(同$reg1的字符一样);
打印 $reg1 和 $reg2 字符完全一样 $reg2却不能匹配 展开
1个回答
展开全部
这个问题是说你连接mysql的时候没有填写密码?
网页上连不上,那应该是你配置文件中的设定与 MySQL 默认权限账户(没有密码的 root)不对应造成的。
在phpMyAdmin中,使用文件config.inc.php保存用户名和密码,当需要更换用户或用户口令更改时,必须修改config.inc.php文件,然后再上传。你去更改下配置文件 试试把。
方法一:
# /etc/init.d/mysql stop
# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
# mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD(’newpassword’) where USER=’root’;
mysql> FLUSH PRIVILEGES;
mysql> quit
# /etc/init.d/mysql restart
# mysql -uroot -p
Enter password: <输入新设的密码newpassword>
mysql>
方法二:
直接使用/etc/mysql/debian.cnf文件中[client]节提供的用户名和密码:
# mysql -udebian-sys-maint -p
Enter password: <输入[client]节的密码>
mysql> UPDATE user SET Password=PASSWORD(’newpassword’) where USER=’root’;
mysql> FLUSH PRIVILEGES;
mysql> quit
# mysql -uroot -p
Enter password: <输入新设的密码newpassword>
mysql>
另一个方法
Windows:
1. 管理员登陆系统,停止mysql服务或者结束mysqld-nt进程
2. 进入命令行,来到mysql的安装目录.假设安装目录为 d:\mysql\ , CMD进入命令行
3. 运行 d:\mysql\bin\mysqld-nt --skip-grant-tables 启动mysql,关闭权限的检查
4. 运行 d:\mysql\bin\mysqladmin -u root flush-privileges password "newpassword" 重设root密码
5. 重新启动mysql服务
网页上连不上,那应该是你配置文件中的设定与 MySQL 默认权限账户(没有密码的 root)不对应造成的。
在phpMyAdmin中,使用文件config.inc.php保存用户名和密码,当需要更换用户或用户口令更改时,必须修改config.inc.php文件,然后再上传。你去更改下配置文件 试试把。
方法一:
# /etc/init.d/mysql stop
# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
# mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD(’newpassword’) where USER=’root’;
mysql> FLUSH PRIVILEGES;
mysql> quit
# /etc/init.d/mysql restart
# mysql -uroot -p
Enter password: <输入新设的密码newpassword>
mysql>
方法二:
直接使用/etc/mysql/debian.cnf文件中[client]节提供的用户名和密码:
# mysql -udebian-sys-maint -p
Enter password: <输入[client]节的密码>
mysql> UPDATE user SET Password=PASSWORD(’newpassword’) where USER=’root’;
mysql> FLUSH PRIVILEGES;
mysql> quit
# mysql -uroot -p
Enter password: <输入新设的密码newpassword>
mysql>
另一个方法
Windows:
1. 管理员登陆系统,停止mysql服务或者结束mysqld-nt进程
2. 进入命令行,来到mysql的安装目录.假设安装目录为 d:\mysql\ , CMD进入命令行
3. 运行 d:\mysql\bin\mysqld-nt --skip-grant-tables 启动mysql,关闭权限的检查
4. 运行 d:\mysql\bin\mysqladmin -u root flush-privileges password "newpassword" 重设root密码
5. 重新启动mysql服务
追问
是我表达有问题吗?
不关连接什么的问题 ,是从数据库中读出来已保存在表中的正则表达式 应用在实际代码中 像这样:$reg1 = "/(mjid|dkid)=([0-9]+)&(scid|plid)=([0-9a-zA-Z]+)/"; 这个放去匹配没问题,但$reg2 = 数据库取到的结果(同$reg1的字符一样);
打印 $reg1 和 $reg2 字符完全一样 $reg2却不能匹配
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询