के रूप में मुद्रित किया जा रहा है मेरे पास कुछ रिकॉर्ड प्राप्त करने के लिए एक खोज फ़ॉर्म है। फार्म के लिए सीमित क्षेत्र में से एक record
, एक ड्रॉपडाउन बॉक्स कि इस तरह दिखता है किया जा रहा है:SQL फ़ील्ड को स्ट्रिंग
<select name="record" id="record">
<option value="1">Highest Score</option>
<option value="2">Most runs</option>
</select>
फिर जब वे निम्नलिखित कोड खोज चलाता है:
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'] = 'runs';
डेटाबेस से चुने गए runs
फ़ील्ड के बजाय एसक्यूएल में 'रन' के रूप में काफी सचमुच मुद्रित किया जा रहा है, इसलिए $record['record']
को प्रत्येक प्रविष्टि के लिए 'रन' के रूप में मुद्रित किया जाएगा, तालिका के बाहर उठाए गए नंबर की बजाय ।
कोटेशन "द्वारा" एक ही बात होती है बदल दिया जाता है, और यदि `` द्वारा बदल दिया कुछ भी नहीं (खाली परिणाम)
बिल्कुल सही, धन्यवाद – cameronjonesweb