Я следующий код PHP:Использование PDO с числами в сравнении строк
$comp1 = $_POST['cohort_id1'];
$comp2 = $_POST['cohort_id2'];
$comp3 = $_POST['cohort_id1'];
$comp4 = $_POST['cohort_id2'];
$dbh = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT cat_code, value, :comp1 , :comp2, round(:comp3/:comp4 * 100) as index_number FROM {$table}";
$stmt = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$stmt->execute(array(':comp1' => $comp1, ':comp2' => $comp2, ':comp3' => $comp3, ':comp4' => $comp4));
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
header('Content-type: application/json');
echo json_encode($result);
Вот как один из объектов, возвращаемых:
?: "national_percent"
cat_code: "edu"
index_number: null
value: "Some College"
То, что я не могу понять, почему первый строка возвращает с «?», но что более важно, почему index_number
имеет значение NULL. Я подозреваю, что это потому, что эти значения преобразуются в строки, но я не уверен, как с этим справиться.
Чтобы указать типы свяжешь, прежде чем выполнить и не выполнять() без Params – developerwjk
@developerwjk Не уверен, что я следую этому примеру, можете ли вы привести пример? – jonmrich
См. [PDOStatement :: bindParam] (http://php.net/manual/en/pdostatement.bindparam.php) и [PDOStatement :: bindValue] (http://php.net/manual/en/pdostatement.bindvalue .php) – developerwjk