Оглавление

7.1. Математические операторы

Математические операторы:
□ + — сложение:
SELECT 8 + 5;

 
□ - — вычитание:
SELECT 10 - 5;

 
□ * — умножение:
SELECT 10 * 5;

 
□ / — деление:
SELECT 10 / 5;
/* Выведет: 2.0000 */

 
□ DIV — целочисленное деление:
SELECT 10 DIV 5;
/* Выведет: 2 */
SELECT 10 DIV 3;
/* Выведет: 3 */

 
% — остаток от деления:
SELECT 10 % 2;
/* Выведет: 0 */
SELECT 9 % 2;
/* Выведет: 1 */

 
□ MOD — остаток от деления:
SELECT 10 MOD 2;
/* Выведет: 0 */

 
Вместо операторов % и MOD можно использовать функцию MOD().
SELECT MOD(10, 2);
/* Выведет: 0 */

 

Следует отметить, что если один из операндов равен NULL, то результат операции также будет равен NULL. В отличие от языков программирования деление на ноль не приводит к генерации сообщения об ошибке. Результатом операции деления на ноль является значение NULL.
Если необходимо сменить знак, то перед операндом следует указать знак – (минус):
SELECT -(-5);
/* Выведет: 5 */

 
В качестве примера рассмотрим возможность подсчета переходов по рекламной ссылке. Для этого создадим таблицу counter в базе данных tests:
  CREATE TABLE `counter` (
  `id_link` INT NOT NULL AUTO_INCREMENT,
 `total` INT,
  PRIMARY KEY (`id_link`)
  ) ENGINE=MyISAM DEFAULT CHARSET=cp1251;


Затем добавим одну запись:
  INSERT INTO `counter` VALUES (1, 0);
Для подсчета переходов в тексте ссылки укажем идентификатор в базе данных и URL-адрес:

<html>
<head>
<title>Подсчет переходов по ссылкам</title>
</head>
<body>
<a href="go.php?id=1&url=http://www.mail.ru/">Перейти</a>
</body>
</html>

Регистрация переходов производится в файле go.php. Исходный код файла приведен в листинге 1.

 

Листинг 1. Регистрация переходов по ссылке

<?php
if (!isset($_GET['id']) || !isset($_GET['url'])) die('Ошибка');
$id = $_GET['id'];
if (preg_match('/^[0-9]+$/s', $id) && $id != 0) {

if ($db = @mysql_connect("localhost", "root", "123456")) {
mysql_select_db("tests");
$query = 'UPDATE `counter` SET `total` = `total` + 1 ';
$query .= 'WHERE `id_link`=' . $id;
@mysql_query($query);
mysql_close($db);
}
}
header('Location: ' . $_GET['url']);
?>

 

 

Использование оператора + позволяет произвести увеличение счетчика за один запрос. Иначе пришлось бы вначале получить значение из базы данных, затем увеличить его и только во втором запросе обновить значение в базе данных.

Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.
Отправитель Нити