mysqlデータベースからデータをフェッチする、受け取ったPHPコードを編集しようとしています。これは、基本的にデータを取得し、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」変数がクエリに正しく挿入されるとは思いません。
正しい方法で行うにはどうすればよいですか?
ありがとう!