将PHP变量传递给MySQL查询

时间:2010-01-04 13:14:17

标签: php mysql variables

这段代码有什么问题?我得到一个空数组。我将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());

3 个答案:

答案 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不符合您的预期。

相关问题