You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中存入变量的文本用于SQL查询无结果,求解决方案

问题解决:变量拼接SQL查询无结果

问题原因

你的代码中,字符串类型的变量$f_name拼入SQL语句时没有加单引号,导致生成的SQL是:

SELECT * from users where f_name=Tom

数据库会把Tom识别成列名或关键字,而非字符串值,因此无法匹配到正确数据。

解决方案

1. 拼接时补充单引号(不推荐,有注入风险)

直接在变量前后添加单引号,让数据库识别为字符串:

$f_name="Tom";
$select_user="SELECT * from users where f_name='$f_name'";

⚠️ 注意:这种写法存在SQL注入风险,如果用户输入包含特殊字符(比如' OR 1=1 --),会导致恶意SQL执行。

2. 使用预处理语句(推荐,安全可靠)

预处理语句会自动处理字符串的引号和转义,同时避免SQL注入,是行业标准写法:

PDO示例
$f_name = "Tom";
// 初始化PDO连接(替换为你的数据库信息)
$pdo = new PDO('mysql:host=localhost;dbname=your_database', 'username', 'password');

// 准备预处理语句
$stmt = $pdo->prepare("SELECT * from users where f_name = :f_name");
// 绑定变量
$stmt->bindParam(':f_name', $f_name);
// 执行查询
$stmt->execute();
// 获取结果
$user = $stmt->fetch(PDO::FETCH_ASSOC);
MySQLi示例
$f_name = "Tom";
// 初始化MySQLi连接(替换为你的数据库信息)
$mysqli = new mysqli("localhost", "username", "password", "your_database");

// 准备预处理语句
$stmt = $mysqli->prepare("SELECT * from users where f_name = ?");
// 绑定变量("s"表示字符串类型)
$stmt->bind_param("s", $f_name);
// 执行查询
$stmt->execute();
// 获取结果集
$result = $stmt->get_result();
// 取出数据
$user = $result->fetch_assoc();

内容的提问来源于stack exchange,提问作者ugwuoke luke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 01:37:26