For some reason my PDO isn't inserting my data into mysql. If I were to preg_replace
the stuff and copy paste it into the mysql terminal, it works as expected.
$list = [
"data" => $_POST['data'],
"c" => $_POST['company'],
"co" => $_POST['country'],
"s" => $_POST['state'],
"su" => $_POST['suburb'],
"st" => $_POST['street'],
"ui" => 12
];
$statement = "
INSERT IGNORE INTO location (country, state, suburb, street)
VALUES (:co, :s, :su, :st);
SELECT id INTO @l
FROM location
WHERE
country = :co
AND
state = :s
AND
suburb = :su
AND
state = :st;
INSERT IGNORE INTO company (name)
VALUES (:c);
SELECT id INTO @c
FROM company
WHERE
name = :c;
SELECT id INTO @si
FROM store
WHERE
company_id = @c
AND
location_id = @l;
INSERT INTO map (data, store_id, user_id)
VALUES (:data, @si, :ui );
";
$query = $pdo->prepare($statement);
$temp_s = $statement;
foreach ($list as $key => $val)
{
$temp_s = preg_replace("/:$key\b/", "'$val'", $temp_s);
$query->bindParam(":$key", $val);
}
What my preg_replace
looks like:
INSERT IGNORE INTO location (country, state, suburb, street)
VALUES ('Australia', 'Victoria', 'Melbourne', 'test');
SELECT id INTO @l
FROM location
WHERE
country = 'Australia'
AND
state = 'Victoria'
AND
suburb = 'Melbourne'
AND
state = 'test';
INSERT IGNORE INTO company (name)
VALUES ('coles');
SELECT id INTO @c
FROM company
WHERE
name = 'coles';
SELECT id INTO @si
FROM store
WHERE
company_id = @c
AND
location_id = @l;
INSERT INTO map (data, store_id, user_id)
VALUES ('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAcIAAAH0CAYAAACuOy31AAAc9UlEQ…D9HAIIIIBAi4AQtnxYgwACCCBwmIAQHgbu5xBAAAEEWgR+AanQ2Peo03NfAAAAAElFTkSuQmCC', @si, '12' );