CodeLobster IDE
http://codelobster.com/forum/

need help with pdo
http://codelobster.com/forum/viewtopic.php?f=3&t=25222
Page 1 of 1

Author:  12Strings [ Sat Mar 04, 2023 8:53 pm ]
Post subject:  need help with pdo

Quote:
Hi, my first attempt at pdo, will someone tell me where I went astray?

Code:
<?php
$host = '127.0.0.1';
$db   = 'homedb';
$user = 'root';
$pass = '';
$charset = 'utf8mb4';

$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$options = [
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES   => false,
];
try {
     $pdo = new PDO($dsn, $user, $pass, $options);
} catch (\PDOException $e) {
     throw new \PDOException($e->getMessage(), (int)$e->getCode());
}
echo "<center>";echo date('m/d/y');echo "</center>";

$tenant=$_POST['tenant'];
$unit=$_POST['unit'];
$amtpaid=$_POST['amtpaid'];
$hudpay=$_POST['hudpay'];
$datepaid=$_POST['datepaid'];

$amtpaid='amtpaid';
$amtdue='amtdue';
$hudpay='hudpay';
$prevbal='prevbal';
$latechg='latechg';
$datepaid='datepaid';

$stmt = $pdo->query('SELECT tenant, unit, amtpaid, amtdue, hudpay, prevbal, latechg, datepaid FROM paytbl');
while ($row = $stmt->fetch())
{
    echo $row['tenant'] . "
";
}

/* if no pay or part pay, add $35 to latechg field and amount not paid to prevbal field */
if ($amtpaid < $amtdue)
{ $latechg = $latechg + "35.00"; $prevbal = $amtdue - $amtpaid; }

/* if payment = amtdue  */
elseif ($amtpaid == $amtdue)
{ $prevbal = $prevbal - $prevbal;
$latechg = $latechg  - $latechg; }

/* *****************************unexpected ';'*******************************
// if over-payment subtract over-payment from prevbal
else ($amtpaid > $amtdue )
{ $prevbal = $amtpaid  - $amtdue;
$latechg = $latechg  - $latechg; }
****************************************************************************** */

/* Perform a query, check for error */
$sql = "UPDATE paytbl SET amtpaid=?, prevbal=?, latechg=?, datepaid=? WHERE unit=?";
prepared_query($conn, $sql, [$amtpaid, $prevbal, $latechg, $datepaid, $unit]);
// $pdo->prepare($sql)->execute([$name, $id]);
?>

Quote:
the resut:
PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES =>
false, ]; try { $pdo = new PDO($dsn, $user, $pass, $options); } catch (\PDOException $e)
{ throw new \PDOException($e->getMessage(), (int)$e->getCode()); } echo "
";echo date('m/d/y');echo "
"; $tenant=$_POST['tenant']; $unit=$_POST['unit']; $amtpaid=$_POST['amtpaid'];
$hudpay=$_POST['hudpay']; $datepaid=$_POST['datepaid']; $amtpaid='amtpaid'; $amtdue='amtdue';
$hudpay='hudpay'; $prevbal='prevbal'; $latechg='latechg'; $datepaid='datepaid';
$stmt = $pdo->query('SELECT tenant, unit, amtpaid, amtdue, hudpay, prevbal, latechg, datepaid FROM
paytbl'); while ($row = $stmt->fetch()) { echo $row['tenant'] . "
"; }
/* if no pay or part pay, add $35 to latechg field and amount not paid to prevbal field */
if ($amtpaid < $amtdue) { $latechg = $latechg + "35.00"; $prevbal = $amtdue - $amtpaid; }
/* if payment = amtdue */
elseif ($amtpaid == $amtdue) { $prevbal = $prevbal - $prevbal; $latechg = $latechg - $latechg; }
/* *****************************unexpected ';'*******************************
// if over-payment subtract over-payment from prevbal else ($amtpaid > $amtdue )
{ $prevbal = $amtpaid - $amtdue; $latechg = $latechg - $latechg; }
****************************************************************************** */
/* Perform a query, check for error */
$sql = "UPDATE paytbl SET amtpaid=?, prevbal=?, latechg=?, datepaid=? WHERE unit=?";
prepared_query($conn, $sql, [$amtpaid, $prevbal, $latechg, $datepaid, $unit]);
// $pdo->prepare($sql)->execute([$name, $id]); ?>

Author:  Admin [ Mon Mar 06, 2023 7:16 am ]
Post subject:  Re: need help with pdo

Hi.

Could You, please, clarify the problem?

We see couple of potential problems:

1) Database connection looks OK

2)
Code:
{ $latechg = $latechg + "35.00"; $prevbal = $amtdue - $amtpaid; }


If they are values from database then You should set in at first:

Code:
$stmt = $pdo->query('SELECT tenant, unit, amtpaid, amtdue, hudpay, prevbal, latechg, datepaid FROM paytbl');
while ($row = $stmt->fetch())
{
    echo $row['tenant'] . "
";
    $latechg = $row['latechg'];
    .....
}


3) Undefined function
Code:
prepared_query($conn, $sql, [$amtpaid, $prevbal, $latechg, $datepaid, $unit]);


Ths syntax is more suitable for "update query"

Code:
$pdo->prepare($sql)->execute([$amtpaid, $prevbal, $latechg, $datepaid, $unit]);


Regards,
Codelobster Team.

Page 1 of 1 All times are UTC
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/