这段代码有什么问题?我得到一个空数组。我将PHP变量传递给查询,但它不起作用;当我给出一个硬编码值时,查询会返回一个结果。
echo $sub1 = $examSubject[$i];
$subType = $examType[$i];
$query = $this->db->query("select dSubject_id from tbl_subject_details where dSubjectCode='$sub1'");
print_r($query->result_array());
答案 0 :(得分:5)
查找“SQL注入”。
我不熟悉$this->db->query
;你用的是什么数据库驱动程序?转义变量的语法因驱动程序而异。
这是一个PDO示例:
$preqry = "INSERT INTO mytable (id,name) VALUES (23,?)";
$stmt = $pdo->prepare($preqry);
$stmt->bindparam(1,$name);
$stmt->execute();
答案 1 :(得分:1)
无法查看数据库抽象层($ this-> db)的作用,这里是来自the mysql_fetch_assoc documentation的example1的调整后代码
<?php
// replace as you see fit
$sub1 = 'CS1';
// replace localhost, mysql_user & mysql_password with the proper details
$conn = mysql_connect("localhost", "mysql_user", "mysql_password");
if (!$conn) {
echo "Unable to connect to DB: " . mysql_error();
exit;
}
if (!mysql_select_db("mydbname")) {
echo "Unable to select mydbname: " . mysql_error();
exit;
}
$sql = 'SELECT `dSubject_id` ';
$sql .= 'FROM `tbl_subject_details` ';
$sql .= "WHERE `dSubjectCode` ='$sub1';";
$result = mysql_query($sql);
if (!$result) {
echo "Could not successfully run query ($sql) from DB: " . mysql_error();
exit;
}
if (mysql_num_rows($result) == 0) {
echo "No rows found, nothing to print so am exiting";
exit;
}
while ($row = mysql_fetch_assoc($result)) {
echo $row['dSubject_id'];
}
mysql_free_result($result);
?>
让我知道输出是什么,我猜它会说:6
答案 2 :(得分:1)
您使用的是CodeIgniter框架(来自$ this-&gt; db-&gt;查询语句)。如果是这样,你为什么不试试:
$this->db->where('dSubjectCode',$sub1);
$query = $this->db->get('tbl_subject_details');
如果这不起作用,您在代码中的前面会出现错误,并且$ sub1不符合您的预期。