我正在尝试编辑我收到的一些 PHP 代码,这些代码从 mysql 数据库中获取数据,它本质上是获取数据并将其格式化为 json 对象。该查询使用名为“start”的 php 变量。我无法开始工作的是让它考虑mysql查询中php文件中的另一个变量,klass
当我添加它时它只返回一个空的json数组,表明传递给数据库的查询有问题。
这是原始代码:
<?php
include_once 'db.php';
//getting the varibles into PHP
$start = 0;
if(isset($_GET['start'])) {
$start = $_GET['start'];
}
if(isset($_GET['klass'])) {
$klass= $_GET['klass'];
}
//sql statement
$sql = "SELECT * FROM `table` WHERE `column2` > 0 ORDER BY `column1` ASC LIMIT :start ,30";
$stmt = $pdb->prepare($sql);
$stmt->bindValue(':start', (int) $start, PDO::PARAM_INT);
$stmt->execute();
//putting data into array
$data = array();
while($row = $stmt->fetch()) {
$data[] = array(
'id' => $row['id'],
'column1' => $row['column1'],
'column2' => $row['column2'],
'column3' => $row['column3'],
'column4' => $row['column4'],
'column5' => $row['column5']
);
$start++;
}
//send back data in json format
echo json_encode(array('nextAmt' => $start, 'laxor' => $data));
?>
这工作得很好,工作得很好,并将正确的数据发送回 javascript jquery.post 函数。
但我试图像这样在查询中添加一个 PHP 变量:
//sql statement
$sql = "SELECT * FROM `table` WHERE `column2` > 0 AND `klass` = " . $klass . "ORDER BY `column1` ASC LIMIT :start ,30";
并使用另一个像这样的 binValue
//sql statement
$sql = "SELECT * FROM `table` WHERE `column2` > 0 AND `klass` = :klass ORDER BY `column1` ASC LIMIT :start ,30";
$stmt = $pdb->prepare($sql);
$stmt->bindValue(':start', (int) $start, PDO::PARAM_INT);
$stmt->bindValue(':klass', (str) $klass, PDO::PARAM_INT);
$stmt->execute();
而且它们似乎都没有工作,我认为“klass”变量没有正确插入到查询中。
我应该如何以正确的方式做到这一点?
谢谢!