php sql 字符,php – 以字符串形式打印的SQL字段

博客讲述了在PHP中遇到的一个问题,即搜索表单的下拉框选择值未正确映射到SQL查询中,导致记录显示错误。代码示例展示了如何根据用户选择的最高分类型('runs'或'SUM(runs)')动态构造SQL查询,并尝试从数据库中获取数据。然而,由于字符串直接插入到ORDER BY子句中,导致了数据不正确地显示为字符串而非数值。博主寻求解决方案来修正这个问题。
摘要由CSDN通过智能技术生成

我有一个搜索表单来获取一些记录.表单的限制字段之一是record,是一个下拉框,如下所示:

Highest Score

Most runs

然后当他们搜索以下代码时:

if (isset($_GET['action']) and $_GET['action'] == 'search')

{

include $_SERVER['DOCUMENT_ROOT'] . '/stats/includes/db.inc.php';

$placeholders = array();

if($_GET['record'] == '1'){

$placeholders[':record'] = 'runs';

} else if($_GET['record'] == '2'){

$placeholders[':record'] = 'SUM(runs)';

}

$select = 'SELECT playerid, :record as record, user.usertitle';

$from = ' FROM cricket_performance p INNER JOIN user ON p.playerid = user.userid';

$where = ' WHERE TRUE';

if ($_GET['team'] != '')

{

$where .= " AND team = :team";

$placeholders[':team'] = $_GET['team'];

}

if ($_GET['record'] != '')

{

$where .= " ORDER BY :record DESC";

}

$where .= " LIMIT 10";

try

{

$sql = $select . $from . $where;

$s = $pdo->prepare($sql);

$s->execute($placeholders);

}

catch (PDOException $e)

{

$error = 'Error fetching record';

include 'form.html.php';

exit();

}

foreach ($s as $row)

{

$records[] = array('playerid' => $row['playerid'], 'record' => $row['record'], 'usertitle' => $row['usertitle'], '1' => $row['1']);

}

include 'form.html.php';

exit();

}

除了一件事,这完全没问题.这:$placeholders [‘:record’] =’run’;字面意思是在SQL中打印为“运行”,而不是从数据库中选择的运行字段,因此$record [‘record’]将打印为每个条目的“运行”,而不是被选出的数字的表.

如果引号被替换为“”同样的事情发生,如果被替换为“没有任何反应(空结果)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值