Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Qual é a melhor maneira de escrever código PHP para inserir dados


Nenhum!

Seu primeiro exemplo usa uma função que foi removida do PHP anos atrás. mysql_query() não existe e não deve mais ser usado. A razão pela qual ele foi removido é que você deve usar instruções preparadas. Eles são fornecidos por extensões mysqli ou PDO.

Seu segundo exemplo é melhor, mas é muito confuso.
  • Você não deve echo mysqli_query . Não há nada útil para ser impresso a partir desta função.
  • Adquira o hábito de usar instruções preparadas o tempo todo e use marcadores de posição para dados variáveis. A partir de agora suas consultas são constantes, mas usar instruções preparadas ainda é uma boa prática caso você precise adicionar um parâmetro posteriormente.
  • Evite usar funções como mysqli_fetch_array() . Iterar a opção de resultado uma a uma é confuso e raramente útil.
  • Nunca verifique o valor de retorno das chamadas mysqli. É inútil. Em vez disso, habilite o relatório de erros. Consulte Como obter a mensagem de erro no MySQLi?
  • Sempre defina o conjunto de caracteres correto. Deve ser utf8mb4 99% do tempo.
  • A consulta SQL pode ser salva em uma variável separada, mas qual é o objetivo? Você só vai passá-lo como um argumento para a query função. Não há necessidade de usar uma variável intermediária.
  • Não use mysqli. Você deve usar PDO em vez disso. Se você tiver que usar mysqli, crie uma função ou classe wrapper simples para essa finalidade e execute sua função genérica em vez de brincar com funções mysqli.

Aqui está um exemplo de como eu faria isso. Primeiro habilito o relatório de erros para o mysqli, abro a conexão e defino o charset. Então eu declaro uma função que recebe 3 parâmetros e retorna um array. O primeiro parâmetro é sua conexão com o banco de dados que você acabou de abrir. A segunda é sua consulta SQL com espaços reservados, se houver. O terceiro é opcional e é uma matriz de valores a serem vinculados aos espaços reservados como parâmetros. Esta função funciona para todos os tipos de consultas SQL. O resto do código se torna realmente simples.
<?php

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$link = new mysqli("myserver.com", "test", "sunil7117", "test");
$link->set_charset('utf8mb4'); // always set the charset

/**
 * Executes an SQL query on the database.
 *
 * @param \mysqli $mysqli
 * @param string $query e.g. SELECT * FROM users WHERE username=?
 * @param array $params An array of parameters to be bound in the given order to the placeholders in SQL
 * @return array
 */
function prepared_query(\mysqli $mysqli, string $query, array $params = []): array {
    $stmt = $mysqli->prepare($query);
    if ($params) {
        $stmt->bind_param(str_repeat("s", count($params)), ...$params);
    }
    $stmt->execute();
    if ($result = $stmt->get_result()) {
        return $result->fetch_all(MYSQLI_BOTH);
    }
    return null;
}

prepared_query($link, "UPDATE user SET email='[email protected]' WHERE email='[email protected]' LIMIT 1");
echo "<br>";

$result = prepared_query($link, "SELECT * FROM user");
echo "welcome to database<br>";

if ($result) {
    $row = $result[0];
    echo "my E-mail id is <strong> ".$row[1]. "</strong> and passoword is <strong>".$row[2]."</strong>";
}