
本文详解如何在 php 中正确查询 mysql 数据库获取动态验证码(如优惠码、访问码),并将其嵌入短信正文,通过 twilio api 可靠发送——重点解决因未正确获取查询结果导致短信内容为空的常见错误。
本文详解如何在 php 中正确查询 mysql 数据库获取动态验证码(如优惠码、访问码),并将其嵌入短信正文,通过 twilio api 可靠发送——重点解决因未正确获取查询结果导致短信内容为空的常见错误。
在使用 Twilio 发送含数据库动态数据的短信时,一个典型误区是:执行了 SQL 查询却未实际获取结果。原始代码中 mysqli_query($connect, $sql) 仅执行查询,但未调用 mysqli_fetch_assoc() 或类似函数提取 $row['code'],导致 $sms 变量未被赋值(为 null 或空字符串),最终短信正文缺失关键信息。
以下是经过验证、结构清晰且具备错误处理的完整实现:
<?php require __DIR__ . '/vendor/autoload.php';
use Twilio\Rest\Client;
// ✅ 配置 Twilio 凭据(生产环境建议使用环境变量)
$account_sid = 'ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
$auth_token = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
// ✅ 安全连接 MySQL(含错误检查)
$conn = mysqli_connect("localhost", "jk47531_voucher", "Mmmm0;4", "u825147531_voucher");
if (!$conn) {
die("数据库连接失败: " . mysqli_connect_error());
}
// ✅ 执行查询并验证结果
$sql = "SELECT code FROM plan50 WHERE 1 ORDER BY RAND() LIMIT 1";
$result = mysqli_query($conn, $sql);
if (!$result) {
die("查询失败: " . mysqli_error($conn));
}
if (mysqli_num_rows($result) === 0) {
die("未找到可用的验证码,请检查表 plan50 是否有数据。");
}
// ✅ 正确提取数据(关键步骤!)
$row = mysqli_fetch_assoc($result);
$code = $row['code'];
// ✅ 初始化 Twilio 客户端并发送短信
$twilio_number = "+18647963358"; // 确保该号码已验证且支持 SMS
$client = new Client($account_sid, $auth_token);
try {
$message = $client->messages->create(
'+25XXXXXXXXXX', // ✅ 目标手机号(E.164 格式,含国家码)
[
'from' => $twilio_number,
'body' => "您的验证码是:{$code}。请勿向他人透露。"
]
);
echo "✅ 短信已成功发送,SID: {$message->sid}";
} catch (Exception $e) {
error_log("Twilio 发送失败: " . $e->getMessage());
die("短信发送失败,请检查 Twilio 配置和网络连接。");
}
mysqli_close($conn);
?>
关键要点与最佳实践:
- 必须显式获取结果:mysqli_query() 返回结果集对象,需配合 mysqli_fetch_assoc()、mysqli_fetch_array() 等函数读取数据;直接使用未定义的 $row 是常见错误根源。
- 强制错误检查:对数据库连接、SQL 执行、结果集数量均做判断,避免静默失败。
- SQL 注入防护提示:当前示例为简单查询,若涉及用户输入(如 WHERE 条件),务必使用预处理语句(mysqli_prepare)防止注入。
- Twilio 号码合规性:确保 from 号码已在 Twilio 控制台启用 SMS 功能,且目标号码格式为 E.164(如 +2547XXXXXXXX)。
- 生产环境加固:将 $account_sid、$auth_token、数据库凭证移至 .env 文件,并通过 dotenv 库加载,禁止硬编码。
通过以上修正,即可稳定、安全地将 MySQL 中的动态数据(如一次性验证码、订单号、激活码)实时嵌入 Twilio 短信,支撑会员通知、身份验证、营销推送等核心业务场景。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











