Derive data type for bindValue call

Remove debugging in document list
This commit is contained in:
Daniel J. Summers 2024-06-04 22:24:27 -04:00
parent 50b4104e02
commit 1e7c41eaa2
2 changed files with 9 additions and 12 deletions

View File

@ -26,7 +26,13 @@ class Custom
$stmt = $pdo->prepare($query); $stmt = $pdo->prepare($query);
foreach ($parameters as $key => $value) { foreach ($parameters as $key => $value) {
if ($debug) echo "<pre>Binding $value to $key\n</pre>"; if ($debug) echo "<pre>Binding $value to $key\n</pre>";
$stmt->bindValue($key, $value); $dataType = match (true) {
is_bool($value) => PDO::PARAM_BOOL,
is_int($value) => PDO::PARAM_INT,
is_null($value) => PDO::PARAM_NULL,
default => PDO::PARAM_STR
};
$stmt->bindValue($key, $value, $dataType);
} }
if ($debug) echo '<pre>SQL: ' . $stmt->queryString . '</pre>'; if ($debug) echo '<pre>SQL: ' . $stmt->queryString . '</pre>';
if ($stmt->execute()) return $stmt; if ($stmt->execute()) return $stmt;

View File

@ -22,7 +22,7 @@ class DocumentList
* @param PDOStatement|null $result The result of the query * @param PDOStatement|null $result The result of the query
* @param Mapper<TDoc> $mapper The mapper to deserialize JSON * @param Mapper<TDoc> $mapper The mapper to deserialize JSON
*/ */
private function __construct(private ?PDO $pdo, public ?PDOStatement $result, public Mapper $mapper) { } private function __construct(private ?PDO $pdo, private ?PDOStatement $result, private Mapper $mapper) { }
/** /**
* Construct a new document list * Construct a new document list
@ -46,17 +46,8 @@ class DocumentList
*/ */
public function items(): Generator public function items(): Generator
{ {
$debug = defined('PDO_DOC_DEBUG_SQL');
if ($debug) echo '*** CALLED GENERATOR ***';
if ($this->result) { if ($this->result) {
if ($debug) echo 'There are results'; while ($row = $this->result->fetch(PDO::FETCH_ASSOC)) yield $this->mapper->map($row);
while ($row = $this->result->fetch(PDO::FETCH_ASSOC)) {
if ($debug) echo "<pre>Returning an item\n</pre>";
yield $this->mapper->map($row);
}
} else {
if ($debug) echo 'Nothing to return';
} }
$this->result = null; $this->result = null;
$this->pdo = null; $this->pdo = null;