Diskuze: sql příkaz LOAD DATA LOCAL INLINE při použití PDO, DB Itnetwork knihovna neupdatne tabulku
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 8 zpráv z 8.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
První řešení.
Když použiji mysqli místo pdo tak to funguje. Tohle proběhne a nahraje data z csv do tabulky
$sql = "LOAD DATA LOCAL INFILE '".$changedrealpath."' REPLACE INTO TABLE dvtbl_getquotehc
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\\r\\n'
IGNORE 1 LINES";
//Try to execute query (not stmt) and catch mysqli error from engine and php error
if (!($stmt = $mysqli->query($sql))) {
echo "\nQuery execute failed: ERRNO: (" . $mysqli->errno . ") " . $mysqli->error;
};
Takže první pomoc je nepoužívat PDO pro tento typ sql příkazu.
Zkus sql dotaz napsat bez uvozovek kolem otazníku.
Jak píše Petr Linhart, tak stačí jen dát pryč uvozovky kolem otazníku, není potřeba je tam dávat.
Ale funguje PDO, když se nepoužije prepared statement, ale rovnou exec.
I co jsem googlil tak v prepared statements s tím měli i jiní problémy.
Funguje tohle:
$pdo->exec("LOAD DATA LOCAL INFILE '$fileName' REPLACE
INTO TABLE `$hcTable`
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\\r\\n'
IGNORE 1 LINES
");
} catch (PDOException $ex)
{
echo 'PDO ERROR: '.$ex->getMessage();
}
Takže pro LOAD DATA LOCAL INFILE nepoužívat prepared statements.
A nejde prepared statement ani když nastavíš při inicializaci driveru PDO::MYSQL_ATTR_LOCAL_INFILE na true?
Ahoj, PDO atribut jsem nastavil hned na začátku. To musí být při inicializaci PDO.
Zobrazeno 8 zpráv z 8.