如何使用纯PHP连接并从Google Cloud SQL中获取数据?
纯PHP连接Google Cloud SQL的实现方法
当然可以只用纯PHP连接Google Cloud SQL!完全不需要你提到的那些App Engine、Composer之类的工具,咱们直接修改你给出的代码就能搞定,分两种常见场景给你说明:
场景1:本地开发/外部服务器通过公网IP连接
首先你得先在Google Cloud控制台里做个关键设置:找到你的Cloud SQL实例,进入连接选项卡,在公共IP区域里把你当前开发机或者外部服务器的公网IP添加到授权网络列表里——这一步必须做,不然Cloud SQL会拒绝你的连接请求。
接下来修改你的代码,核心就是把原来的localhost换成Cloud SQL实例的公网IP地址(这个IP同样在控制台的实例详情里能找到),其他用户名、密码、数据库名用你创建Cloud SQL时设置的信息就行:
<?php $servername = "你的Cloud SQL实例公网IP"; $username = "你的数据库用户名"; $password = "你的数据库密码"; $dbname = "你的数据库名"; // 创建连接 $conn = mysqli_connect($servername, $username, $password, $dbname); // 检查连接是否成功 if (!$conn) { die("连接失败: " . mysqli_connect_error()); } $sql = "SELECT id, firstname, lastname FROM MyGuests"; $result = mysqli_query($conn, $sql); if (mysqli_num_rows($result) > 0) { // 循环输出查询结果 while($row = mysqli_fetch_assoc($result)) { echo "id: " . $row["id"]. " - 姓名: " . $row["firstname"]. " " . $row["lastname"]. "<br>"; } } else { echo "没有查询到结果"; } mysqli_close($conn); ?>
场景2:部署在Google Cloud服务上(比如Compute Engine)用套接字连接
如果你的PHP应用是部署在Google Cloud自家的服务上,更推荐用Unix套接字连接——这种方式不需要开放公网IP,安全性更高,而且延迟更低。修改方式如下:
<?php $servername = "localhost"; $username = "你的数据库用户名"; $password = "你的数据库密码"; $dbname = "你的数据库名"; // 通过Unix套接字创建连接,替换成你的实例连接名 $conn = mysqli_connect( $servername, $username, $password, $dbname, null, "/cloudsql/你的项目ID:区域:实例名" ); // 检查连接是否成功 if (!$conn) { die("连接失败: " . mysqli_connect_error()); } $sql = "SELECT id, firstname, lastname FROM MyGuests"; $result = mysqli_query($conn, $sql); if (mysqli_num_rows($result) > 0) { // 循环输出查询结果 while($row = mysqli_fetch_assoc($result)) { echo "id: " . $row["id"]. " - 姓名: " . $row["firstname"]. " " . $row["lastname"]. "<br>"; } } else { echo "没有查询到结果"; } mysqli_close($conn); ?>
这里的套接字路径格式是/cloudsql/项目ID:区域:实例ID,你可以在Cloud SQL控制台的实例详情里找到完整的实例连接名,直接复制过来就行。
额外注意事项
- 确保你使用的数据库账号拥有访问目标数据库的权限
- 本地开发时,别忘了检查你的防火墙是否放行3306端口(MySQL默认端口)
- 生产环境优先选择套接字或私有IP连接,避免用公网IP暴露数据库
内容的提问来源于stack exchange,提问作者bubbahut
相关产品推荐
相关产品推荐

