php要连接docker中运行的mysql是不能用localhost 或 127.0.0.1来连接的,因为每个docker运行容器的localhost 和127.0.0.1都是自己容器本身,不是mysql容器,需要修改成母机 IP,或者是mysql容器名称
$dbms='mysql'; //数据库类型
$host='xy_mysql'; //数据库主机名,在docker中,xy_mysql是我的mysql容器的别名
$dbName='test'; //使用的数据库
$user='root'; //数据库连接用户名
$pass='xy123456'; //对应的密码
$dsn="$dbms:host=$host;dbname=$dbName";
try {
$con = new PDO($dsn, $user, $pass); //初始化一个PDO对象
$con->query('SET NAMES UTF8');
$res = $con->query('select * from user');
while ($row = $res->fetch(PDO::FETCH_ASSOC)) {
echo "id:{$row['id']} name:{$row['name']}";
}
} catch (PDOException $e) {
echo '错误原因:' . $e->getMessage();
}
参考:
https://blog.youkuaiyun.com/weixin_41282397/article/details/82994370