EDIT: мое плохое было опечаткой в db - все записи имели дополнительное пространство в начале кода, кроме первого - вот почему я получал только первая записьStrange PDO select statement behavior - выбор только первой записи
его самый простой запрос - я найти запись с соответствующим code
и active
поля со значением 1. Если есть такая запись, которую я обновить поле active
до 0.
# MySQL with PDO_MYSQL
$DBH = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
$DBH->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
$sql = "SELECT * FROM codes WHERE code=? AND active=1";
$STH = $DBH->prepare($sql);
$STH->setFetchMode(PDO::FETCH_ASSOC);
$result = $STH->execute(array($_POST["code"]));
$row = $STH->fetchAll();
echo "<pre>", var_dump($row), "</pre>";
echo $result , " rows: " . $STH->rowCount();
if($STH->rowCount() == 0){
echo "Error - this code is inactive";
}else{
echo "Code succesfully activated";
$STH = $DBH->prepare("UPDATE codes SET active=0 WHERE code=?");
$STH->execute(array($_POST["code"]));
}
Но это работает только для первой записи 847BKX
. Если я пытаюсь искать другие, он всегда возвращает 0 строк, хотя поле active
все равно 1. Вот снимок из базы данных - code
поле индексируется varchar
длина 255. Как это работает только для первой записи, а не для других. ..?
Получаете ли вы действительное значение в '$ _POST [" code "]'? –
Да - я даже пытался с жестко заданными значениями .. и все тот же .. так странно .. – fjckls
Этот вопрос не соответствует теме, потому что ошибка вызвана опечаткой –