Я возвращаю массив результатов, которые помещаю в цикл foreach, и каждый результат сравнивается с одной суммой. Пока условие выполнено, оно должно вставлять строки. Тем не менее, никакие данные никогда не вставляются в базу данных, но журналы ошибок также пусты, т.е. я не получаю ошибок.
foreach ($invoices as $invoice) {
if ($invoice->amount <= $this->amount) {
$stmt = $db->prepare("INSERT INTO 'payment_link' ('amount') VALUES (:amount)");
$stmt->bindValue(":amount", $invoice->amount, PDO::PARAM_STR);
$stmt->execute();
}
}
print_r($invoices)
дает мне:
Array ( [0] => App\Models\Invoice Object ( [customer_id] => [description] => [date_created] => [amount] => 300.00 [total:App\Models\Invoice:private] => [invoice_id] => [line_description] => [line_amount] => [errors] => Array ( ) ) [1] => App\Models\Invoice Object ( [customer_id] => [description] => [date_created] => [amount] => 500.00 [total:App\Models\Invoice:private] => [invoice_id] => [line_description] => [line_amount] => [errors] => Array ( ) ) ) Array ( [0] => App\Models\Invoice Object ( [customer_id] => [description] => [date_created] => [amount] => 300.00 [total:App\Models\Invoice:private] => [invoice_id] => [line_description] => [line_amount] => [errors] => Array ( ) ) [1] => App\Models\Invoice Object ( [customer_id] => [description] => [date_created] => [amount] => 500.00 [total:App\Models\Invoice:private] => [invoice_id] => [line_description] => [line_amount] => [errors] => Array ( ) ) )
[На основе кода в вопросе, а не обсуждения в комментариях]
Вы должны получить на глаз; спросите компьютер, почему он не вставил строки. Из документа php: $stmt->execute();
Возвращает ИСТИНА в случае успеха или ЛОЖЬ в случае неудачи. ,
Протестируйте результат и опубликуйте его в журнале ошибок (или откройте экран, все, что вам подходит).
$result = $stmt->execute();
if ($result) {
error_log("row inserted successfully");
}
else {
error_log("insert FAILED");
}
Если обратной связи нет, цикл не выполняется или один из предыдущих операторов не выполнен. (Они также возвращают TRUE в случае успеха и FALSE в случае неудачи).
Если написано "вставьте НЕ УКАЗАНО ", вы можете получить более подробную информацию из PDOStatement :: errorinfo.
Если написано "строки вставлены успешно", то есть что исследовать. (Например: использует ли программа TRANSACTIONS и нуждается ли в коммите?)
Начните со сбора информации, которой у вас нет, это поможет вам отследить реальную проблему.
if ($invoice->amount <= $this->amount) {
условие, если его значениеTRUE
, вторая проверкаprint_r($invoices)
what ru получает и делится результатом.$this->amount
равна 800, а$invoice->amount
300 и 500. Если я выведу $ invoice-> сумму, я получу 300 и 500, так что это правда.print_r
в мой оригинальный вопрос сейчас ..