Искупление греха в PHP 5.0 и MySQL версии 4.1 и старше
<?php
$db = mysqli_connect(getServer(), getUid(), getPwd());
$stmt = mysqli_prepare($link, "SELECT ccnum FROM cust WHERE id=?");
$id = $HTTP_GET_VARS["id"];
// пропускаем только корректные ID (от 1 до 8 цифр)
if (preg_match('\d{1,8}$/',$id);
mysqli_stmt_bind_param($stmt, "s", $id);
mysqli_stmt_execute($stmt);
mysqli_stmt_bind_result($stmt, $result);
mysqli_stmt_fetch($stmt);
if (empty($name)) {
echo "Результата нет!";
} else {
echo $result;
}
else {
echo "Неверный ID. Попробуйте еще раз.");
}
?>
Версии PHP ниже 5.0 не поддерживают связывания параметров с помощью показанной выше функции mysqli_prepare. Однако если для работы с базами данных вы пользуетесь архивом расширений PHP PEAR (PHP Extensions and Applications Repository, http://pear.php.net), то там есть функции DB_common::prepare() и DB_common::query() для подготовки параметризованных запросов.
Искупление греха в Perl/CGI
#!/usr/bin/perl
use DBI;
use CGI;
print CGI::header();
$cgi = new CGI;
$id = $cgi->param('id');
// пропускаем только корректные ID (от 1 до 8 цифр)
exit unless ($id =~ /^[\d]{1,8}$);
print "<html><body>";
// Параметры соединения получаем извне
$dbh = DBI->connect(conn(),
conn_name(),
conn_pwd())
or print "Ошибка connect";
# детальная информация об ошибке в $DBI::errstr
$sql = "SELECT ccnum FROM cust WHERE id = ?";
$sth = $dbh->prepare($sql)
or print "Ошибка prepare";
$sth->bind_param(1,$id);
$sth->execute()
or print "Ошибка execute";
# Вывести данные
while (@row = $sth->fetchrow_array ) {
print "@row<br>";
}
$dbh->disconnect;
print "</body></html>";
exit;