I have insert in PDO. I need to write a select query before that and get the count of the rows. Based on that I must write an if condition before insert.
Below is my code.
<?php
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "";
$dbname = "test";
function placeholder( $text, $count = 0, $separator = ',' ) {
$result = array();
if ($count > 0) {
for ($x = 0; $x < $count; $x++) {
$result[] = $text;
}
}
return implode( $separator, $result );
}
$pdo = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);
$datafields = array( 'email' => '', 'var1' => '', 'var2' => '' );
$data[] = array( 'email' => '
[email protected]', 'var1' => 'test', 'var2' => 'test2' );
$data[] = array( 'email' => '
[email protected]', 'var1' => 'test', 'var2' => 'test2' );
$data[] = array( 'email' => '
[email protected]', 'var1' => 'test', 'var2' => 'test2' );
$pdo->beginTransaction(); // Speed up your inserts
$insertvalues = array();
foreach ($data as $d) {
$questionmarks[] = '(' . placeholder( '?', sizeof($d)) . ')';
$insertvalues = array_merge( $insertvalues, array_values($d) );
}
$sql = "INSERT INTO engagements (" . implode( ',', array_keys( $datafields ) ) . ") VALUES " . implode( ',', $questionmarks);
$statement = $pdo->prepare($sql);
try {
$statement->execute($insertvalues);
} catch(PDOException $e) {
echo $e->getMessage();
}
$pdo->commit();