Tôi có một mẫu tìm kiếm để lấy một số bản ghi. Một trong những lĩnh vực hạn chế đối với hình thức là record
, là một hộp thả xuống trông như thế này:Trường SQL đang được in dưới dạng chuỗi
<select name="record" id="record">
<option value="1">Highest Score</option>
<option value="2">Most runs</option>
</select>
Sau đó, khi họ tìm kiếm đoạn mã sau chạy:
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();
}
Và làm việc hoàn toàn tốt đẹp, ngoại trừ vì một điều. Điều này: $placeholders[':record'] = 'runs';
là khá nghĩa đen được in trong SQL là 'chạy', thay vì trường runs
được chọn từ cơ sở dữ liệu, vì vậy $record['record']
sẽ được in dưới dạng 'chạy' cho mỗi mục nhập, thay vì số được chọn ra khỏi bảng .
nếu những trích dẫn được thay thế bằng "" điều tương tự xảy ra, và nếu thay thế bằng '' có gì xảy ra (kết quả trống)
Tuyệt vời, cảm ơn bạn – cameronjonesweb