У меня есть программа, написанная на php, но мне нужно заменить функцию запроса, чтобы получить fub запроса для вставки, обновления и удаления запросов. Кроме того, функция запроса должна возвращать объект класса Resource и функцию выполнить количество строк, которые повлияли на запрос (затронутые строки). у меня нет много идей, как это сделать.
?php
function db_connect( $error=null, $configfile='database_config.php' )
{
require_once( $configfile );
// $conn = pg_connect( "host=$server dbname=$database user=$user password=$password" );
// $error= pg_last_error( $conn );
$conn = mysqli_connect( $server, $user, $password, $database );
$error= mysqli_error( $conn );
/* change character set to utf8 */
mysqli_set_charset($conn, "utf8");
return $conn;
}
function db_query( $conn, $query, $error=null )
{
// $res=pg_query( $conn, $query );
// $error=pg_last_error( $conn );
$res=mysqli_query( $conn, $query );
$error=mysqli_error( $conn );
return $res;
}
function db_fetch( $result )
{
// return pg_fetch_assoc( $result );
return mysqli_fetch_assoc( $result );
}
function db_genid( $link, $table, $idcol )
{
$res=db_query( $link, "select max($idcol) from $table" );
$row=db_fetch( $res );
if ( $res ) return $row[0]+1;
return 1;
}
function db_close( $conn )
{
// pg_close($conn);
mysqli_close($conn);
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Tworzenie tabeli</title>
<meta http-equiv = "Content-Type" content = "text/html; charset=utf-8">
</head>
<body>
Dane tej tabeli:
<table border = "1">
<?php
$link=db_connect();
$result=db_query( $link, "select * from osoba" );
while ( $row=db_fetch( $result ) )
{
echo "<tr>";
foreach ( $row as $col ) echo "<td>$col</td>";
echo "</tr>";
}
db_close( $link );
?>
</table>
<hr><h2> Zrodlo pliku </h2>
<?php
show_source(__FILE__);
?>
</body>
</html>
Примечание. Объектно-ориентированный интерфейс mysqli значительно менее подробен, что упрощает чтение и аудит кода, и его нелегко спутать с устаревшим интерфейсом mysql_query. Прежде чем вы слишком увлечетесь процедурным стилем, стоит переключиться на него. Пример: $db = new mysqli(…) и $db->prepare("…") Процедурный интерфейс является артефактом эпохи PHP 4, когда был представлен API mysqli, и его не следует использовать в новом коде.
Если вы не знаете, с чего начать, взгляните на рамки разработки, чтобы узнать, что они предлагают. Они бывают разных стилей, от действительно простых, как Обезжиренный фреймворк, до очень функциональных, таких как Laravel. Большинство из них включает в себя какой-то механизм входа в систему, поэтому вам не придется писать свой собственный. Они также показывают вам, как организовать ваш код, чтобы вы не столкнулись с запутанной смесью PHP, HTML, CSS и SQL, которую невозможно поддерживать или повторять.






Пожалуйста, не пишите обертки вокруг
mysqli. Обычно это блокирует важные функции безопасности, такие как подготовленный оператор со значениями-заполнителями. Вы хотите, чтобы ваши запросы были выявлены там, где ошибки очевидны, а не скрыты бессмысленным слоем абстракции.