Продовження - робота з mysql
(Мабуть я трошечки завтрамен --- все буде зроблено, дописано, але - завтра!! )
якщо ви встановлювали і збирали
https://github.com/vk-com/kphp-kdb
- ви зможете підключитися до mysql лише з такими параметрами (налаштуваннями?) :
користувач boxed , пароль password , база даних boxed_base, 127.0.0.1:3306
після невеличкого налаштування - вам потрібно відкрити файл /net/net-mysql-client.c
та закоментувати строчки з 253 по 258.
/*if (q - p != sizeof (struct mysql_auth_packet_end)) {
if (verbosity > 0) {
fprintf (stderr, "server_auth_packet has incorrect size\n");
}
return -1;
}*/
після чого потрібно заново зібрати KPHP
(інструкція як це зробити написана вище)
у mysql вам потрібно створити такого користувача
CREATE DATABASE boxed_base;
GRANT ALL PRIVILEGES ON boxed_base.* TO 'boxed'@'127.0.0.1' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
та базу даних mysql, створити таблицю та наповнити її
ALTER DATABASE `boxed_base` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
USE boxed_base;
CREATE TABLE IF NOT EXISTS `test_cities` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`city_name` varchar(255) NOT NULL,
`city_region` varchar(255) NOT NULL,
`city_pop` int(11) NOT NULL,
`city_old` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ;
INSERT INTO `test_cities` (`id`, `city_name`, `city_region`, `city_pop`, `city_old`) VALUES
(1, 'Львів', 'Львівська область', 729429, 759),
(2, 'Київ', 'Київська область', 2888369, 1533),
(3, 'Одеса', 'Одеська область', 1012277, 600),
(4, 'Тернопіль', 'Тернопільська область', 217773, 475),
(5, 'Чернівці', 'Чернівецька область', 264333, 607),
(6, 'Ужгород', 'Закарпатська область', 115520, 1110);
наш mysqltest.php
<?php
header('Content-type: text/html; charset=utf-8');
new_db_decl();
$c=dbQuery("SET NAMES 'utf8'");
$c=dbQuery("SET CHARACTER SET 'utf8'");
$c=dbQuery("SET SESSION collation_connection = 'utf8_general_ci'");
echo "<br>---Подивимося табличку------<br>";
$test = dbQuery("SELECT * FROM `test_cities` ORDER BY `id`");
$array = array();
while($row = dbFetchRow($test)){
$array[] = $row;
}
echo "<pre>";
print_r($array);
echo "</pre><br>";
echo "SELECT * FROM `test_cities` ORDER BY `id`";
echo "<br><br>---Посортуємо по стовпчику------<br>";
$test = dbQuery("SELECT * FROM `test_cities` ORDER BY `city_old` DESC");
$array = array();
while($row = dbFetchRow($test)){
$array[] = $row;
}
echo "<pre>";
print_r($array);
echo "</pre><br>";
echo "SELECT * FROM `test_cities` ORDER BY `city_old` DESC";
echo "<br><br>---Додамо нове місто------<br>";
$test = dbQuery("INSERT INTO `test_cities` (`city_name`, `city_region`, `city_pop`, `city_old`) VALUES ('Житомир','Мирна область','277777','1131')");
echo "INSERT INTO `test_cities` (`city_name`, `city_region`, `city_pop`, `city_old`) VALUES ('Житомир','Мирна область','277777','1131')";
echo "<br><br>---Подивимося табличку------<br>";
$test = dbQuery("SELECT * FROM `test_cities` ORDER BY `id`");
$array = array();
while($row = dbFetchRow($test)){
$array[] = $row;
}
echo "<pre>";
print_r($array);
echo "</pre><br>";
echo "SELECT * FROM `test_cities` ORDER BY `id`";
echo "<br><br>---Відредагуємо значення комірки одного рядка------<br>";
$test = dbQuery("UPDATE `test_cities` SET `city_old`='7777' WHERE `id`='2'");
echo "UPDATE `test_cities` SET `city_old`='7777' WHERE `id`='2'";
echo "<br><br>---Подивимося табличку------<br>";
$test = dbQuery("SELECT * FROM `test_cities` ORDER BY `id`");
$array = array();
while($row = dbFetchRow($test)){
$array[] = $row;
}
echo "<pre>";
print_r($array);
echo "</pre><br>";
echo "SELECT * FROM `test_cities` ORDER BY `id`";
echo "<br><br>---Видалимо рядочок з таблиці------<br>";
$test = dbQuery("DELETE FROM `test_cities` WHERE `city_old`='7777'");
echo "DELETE FROM `test_cities` WHERE `city_old`='7777'";
echo "<br><br>---Подивимося табличку------<br>";
$test = dbQuery("SELECT * FROM `test_cities` ORDER BY `id`");
$array = array();
while($row = dbFetchRow($test)){
$array[] = $row;
}
echo "<pre>";
print_r($array);
echo "</pre><br>";
echo "SELECT * FROM `test_cities` ORDER BY `id`";
echo '<br>';
?>
компілюємо наш mysqltest.php, запускаємо сервер, дивимося на результат у браузері
якщо ви встановлювали і збирали
https://github.com/ximik777/kphp-kdb
- ви можете підключатися зі своїми параметрами користувач-пароль-база_даних, адже у цьому форку дописано таку функцію
компілюємо наш mysqltest.php
kphpc mysqltest.php -o myserver -n
(тут я скористався створеним вище скороченням)
при запуску сервера вам потрібно лише дописати свої параметри з ключем -A
./myserver -H 8080 -A db_user:db_pass@db_name
також можливо потрібно буде виповнити перед компіляцією
export KPHP_PATH=/usr/local/src/kphp-kdb
export LD_LIBRARY_PATH=/usr/local/lib/
йдемо дивитись результат у браузері
---Подивимося табличку------
Array
(
[0] => Array
(
[id] => 1
[city_name] => Львів
[city_region] => Львівська область
[city_pop] => 729429
[city_old] => 759
)
[1] => Array
(
[id] => 2
[city_name] => Київ
[city_region] => Київська область
[city_pop] => 2888369
[city_old] => 1533
)
[2] => Array
(
[id] => 3
[city_name] => Одеса
[city_region] => Одеська область
[city_pop] => 1012277
[city_old] => 600
)
[3] => Array
(
[id] => 4
[city_name] => Тернопіль
[city_region] => Тернопільська область
[city_pop] => 217773
[city_old] => 475
)
[4] => Array
(
[id] => 5
[city_name] => Чернівці
[city_region] => Чернівецька область
[city_pop] => 264333
[city_old] => 607
)
[5] => Array
(
[id] => 6
[city_name] => Ужгород
[city_region] => Закарпатська область
[city_pop] => 115520
[city_old] => 1110
)
)
SELECT * FROM `test_cities` ORDER BY `id`
---Посортуємо по стовпчику------
Array
(
[0] => Array
(
[id] => 2
[city_name] => Київ
[city_region] => Київська область
[city_pop] => 2888369
[city_old] => 1533
)
[1] => Array
(
[id] => 6
[city_name] => Ужгород
[city_region] => Закарпатська область
[city_pop] => 115520
[city_old] => 1110
)
[2] => Array
(
[id] => 1
[city_name] => Львів
[city_region] => Львівська область
[city_pop] => 729429
[city_old] => 759
)
[3] => Array
(
[id] => 5
[city_name] => Чернівці
[city_region] => Чернівецька область
[city_pop] => 264333
[city_old] => 607
)
[4] => Array
(
[id] => 3
[city_name] => Одеса
[city_region] => Одеська область
[city_pop] => 1012277
[city_old] => 600
)
[5] => Array
(
[id] => 4
[city_name] => Тернопіль
[city_region] => Тернопільська область
[city_pop] => 217773
[city_old] => 475
)
)
SELECT * FROM `test_cities` ORDER BY `city_old` DESC
---Додамо нове місто------
INSERT INTO `test_cities` (`city_name`, `city_region`, `city_pop`, `city_old`) VALUES ('Житомир','Мирна область','277777','1131')
---Подивимося табличку------
Array
(
[0] => Array
(
[id] => 1
[city_name] => Львів
[city_region] => Львівська область
[city_pop] => 729429
[city_old] => 759
)
[1] => Array
(
[id] => 2
[city_name] => Київ
[city_region] => Київська область
[city_pop] => 2888369
[city_old] => 1533
)
[2] => Array
(
[id] => 3
[city_name] => Одеса
[city_region] => Одеська область
[city_pop] => 1012277
[city_old] => 600
)
[3] => Array
(
[id] => 4
[city_name] => Тернопіль
[city_region] => Тернопільська область
[city_pop] => 217773
[city_old] => 475
)
[4] => Array
(
[id] => 5
[city_name] => Чернівці
[city_region] => Чернівецька область
[city_pop] => 264333
[city_old] => 607
)
[5] => Array
(
[id] => 6
[city_name] => Ужгород
[city_region] => Закарпатська область
[city_pop] => 115520
[city_old] => 1110
)
[6] => Array
(
[id] => 7
[city_name] => Житомир
[city_region] => Мирна область
[city_pop] => 277777
[city_old] => 1131
)
)
SELECT * FROM `test_cities` ORDER BY `id`
---Відредагуємо значення комірки одного рядка------
UPDATE `test_cities` SET `city_old`='7777' WHERE `id`='2'
---Подивимося табличку------
Array
(
[0] => Array
(
[id] => 1
[city_name] => Львів
[city_region] => Львівська область
[city_pop] => 729429
[city_old] => 759
)
[1] => Array
(
[id] => 2
[city_name] => Київ
[city_region] => Київська область
[city_pop] => 2888369
[city_old] => 7777
)
[2] => Array
(
[id] => 3
[city_name] => Одеса
[city_region] => Одеська область
[city_pop] => 1012277
[city_old] => 600
)
[3] => Array
(
[id] => 4
[city_name] => Тернопіль
[city_region] => Тернопільська область
[city_pop] => 217773
[city_old] => 475
)
[4] => Array
(
[id] => 5
[city_name] => Чернівці
[city_region] => Чернівецька область
[city_pop] => 264333
[city_old] => 607
)
[5] => Array
(
[id] => 6
[city_name] => Ужгород
[city_region] => Закарпатська область
[city_pop] => 115520
[city_old] => 1110
)
[6] => Array
(
[id] => 7
[city_name] => Житомир
[city_region] => Мирна область
[city_pop] => 277777
[city_old] => 1131
)
)
SELECT * FROM `test_cities` ORDER BY `id`
---Видалимо рядочок з таблиці------
DELETE FROM `test_cities` WHERE `city_old`='7777'
---Подивимося табличку------
Array
(
[0] => Array
(
[id] => 1
[city_name] => Львів
[city_region] => Львівська область
[city_pop] => 729429
[city_old] => 759
)
[1] => Array
(
[id] => 3
[city_name] => Одеса
[city_region] => Одеська область
[city_pop] => 1012277
[city_old] => 600
)
[2] => Array
(
[id] => 4
[city_name] => Тернопіль
[city_region] => Тернопільська область
[city_pop] => 217773
[city_old] => 475
)
[3] => Array
(
[id] => 5
[city_name] => Чернівці
[city_region] => Чернівецька область
[city_pop] => 264333
[city_old] => 607
)
[4] => Array
(
[id] => 6
[city_name] => Ужгород
[city_region] => Закарпатська область
[city_pop] => 115520
[city_old] => 1110
)
[5] => Array
(
[id] => 7
[city_name] => Житомир
[city_region] => Мирна область
[city_pop] => 277777
[city_old] => 1131
)
)
SELECT * FROM `test_cities` ORDER BY `id`
корисне
також ми можемо запустити kphp сервер "на фоні", тобто так, щоб після запуску kphp сервера можна було "поклацати" ще щось, а не дивитися на лог
./myserver -H 8080 -A db_user:db_pass@db_name -d &
далі буде...