PHP Database Object
Введение | |
Подключение к БД | |
Создание таблицы | |
Импорт из csv | |
Похожие статьи |
Введение
php.net PDO удобен тем, что если вы вдруг поменяете СУБД, например, с MySQL на PostgreSQL в код будет нужно внести минимальные изменения, PDO сделать основную работу за вас.
Подключение к базе данных с помощью PHP PDO
Рассмотрим пример подключения к MySQL и будем использовать этот код в следующих примерах.
$srvname = "localhost";
$usrname = "user_dbname";
$password = "secret";
$dbname = "user_dbname";
try {
$conn = new PDO("mysql:host=$srvname; dbname=$dbname", $usrname, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully&lgt;br>";
} catch(PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
Создание таблицы с помощью PHP PDO
Сперва нужно
подключиться к базе данных
Пример создания таблицы
$sql="CREATE TABLE goods (
`Id` INT NOT NULL AUTO_INCREMENT ,
`available` BOOLEAN,
`categoryId` VARCHAR(255) ,
`currencyId` VARCHAR(5) ,
`delivery` BOOLEAN,
`description` VARCHAR(50),
`downloadable` BOOLEAN,
`shopId` INTEGER UNSIGNED ,
`local_delivery_cost` INTEGER UNSIGNED ,
`modified_time` BIGINT UNSIGNED ,
`name` VARCHAR(255),
`oldprice` FLOAT,
`picture` VARCHAR(255),
`price` FLOAT,
`sales_notes` VARCHAR(255),
`type` VARCHAR(255),
`url` VARCHAR(255),
`vendor` VARCHAR(255),
PRIMARY KEY (`Id`)
)";
try {
$conn->query($sql);
echo "Table is created";
} catch(PDOException $e) {
echo "Table is not created: " . $e->getMessage();
}
Импорт из csv файла PHP PDO
Пример добавления в эту таблицу данных из .csv файла
if (($handle = fopen("goods.csv", "r")) !== FALSE) {
try {
// prepare sql and bind parameters using PDO
$stmt = $conn->prepare("INSERT INTO goods (available, categoryId, currencyId,
delivery, description, downloadable, shopId,
local_delivery_cost, modified_time, name, oldprice,
picture, price, sales_notes, type, url, vendor)
VALUES (:available, :categoryId, :currencyId, :delivery, :description,
:downloadable, :shopId, :local_delivery_cost, :modified_time,
:name, :oldprice, :picture, :price, :sales_notes, :type, :url, :vendor)");
$stmt->bindParam(':available', $available);
$stmt->bindParam(':categoryId', $categoryId);
$stmt->bindParam(':currencyId', $currencyId);
$stmt->bindParam(':delivery', $delivery);
$stmt->bindParam(':description', $description);
$stmt->bindParam(':downloadable', $downloadable);
$stmt->bindParam(':shopId', $shopId);
$stmt->bindParam(':local_delivery_cost', $local_delivery_cost);
$stmt->bindParam(':modified_time', $modified_time);
$stmt->bindParam(':name', $name);
$stmt->bindParam(':oldprice', $oldprice);
$stmt->bindParam(':picture', $picture);
$stmt->bindParam(':price', $price);
$stmt->bindParam(':sales_notes', $sales_notes);
$stmt->bindParam(':type', $type);
$stmt->bindParam(':url', $url);
$stmt->bindParam(':vendor', $vendor);
} catch(PDOException $e) {
echo "Prepare failed: " . $e->getMessage();
}
// первая строка с названиями столбцов не нужна
fgets($handle);
while (($data = fgetcsv($handle, 100000, ";")) !== FALSE) {
// присваиваем параметрам значения и выполняем запрос
$available = $data[0];
$categoryId = $data[1];
$currencyId =$data[2];
$delivery = $data[3];
$description = $data[4];
$downloadable = $data[5];
$shopId = $data[6];
$local_delivery_cost = $data[7];
$modified_time = $data[8];
$name = $data[9];
$oldprice = $data[10];
$picture = $data[11];
if (isset($data[12])) {
$price = $data[12];
} else {
$price = "";
};
if (isset($data[13])) {
$sales_notes = $data[13];
} else {
$sales_notes = "";
}
if (isset($data[14])) {
$type = $data[14];
} else {
$type = "";
}
$url = $data[15];
$vendor = $data[16];
try {
$stmt->execute($data);
echo
} catch(PDOException $e) {
echo "Data is not inserted: " . $e->getMessage();
}
}
fclose($handle);
$conn = null;
}