How to update my Mysql code to Mysqli?

Asked

Viewed 2,407 times

15

I have codes that use mysql and need to upgrade to mysqli.

I need to make two changes, being them on the pages .php which insert the data into the database table and also into the pages displaying the data.

How to proceed?

Follow the code of the page that inserts data:

<body>
<?php
if(isset($_POST['enviar'])){
    $nome = mysql_real_escape_string(trim($_POST['nome']));
    $descricao = mysql_real_escape_string(trim($_POST['descricao']));
    $detalhes = mysql_real_escape_string(trim($_POST['detalhes']));

    $img = $_FILES['foto'];
    $name = $img['name'];
    $tmp = $img['tmp_name'];
    $size = $img['size'];
    $ext = end((explode('.', $name)));
    $pasta = '../img/produtos';
    $maxSize = 1024 * 1024 * 2;
    $permite = array('jpg','jpeg','png');

    if(empty($nome) && empty($descricao) && empty($name)){
        echo '<script>alert("Por favor, preencha o formulário de cadastro de produto corretamente.");</script>';
    }else if(empty($nome)){
        echo '<script>alert("Por favor, preencha o campo Nome.");</script>';
    }else if(empty($descricao)){
        echo '<script>alert("Por favor, preencha o campo Descrição.");</script>';
    }else if(empty($detalhes)){
        echo '<script>alert("Por favor, preencha o campo Detalhes.");</script>';
    }else if(empty($name)){
        echo '<script>alert("Por favor, selecione uma imagem.");</script>';
    }else if(!in_array($ext, $permite)){
        echo '<script>alert("A extensão da imagem selecionada não é suportada.");</script>';
    }else if($maxSize < $size){
        echo '<script>alert("A imagem selecionada é grande demais.");</script>';
    }else{
        $name = uniqid().'.'.$ext;
        $sql = mysql_query("INSERT INTO produtos (nome, descricao, detalhes, imagem) VALUES ('$nome', '$descricao', '$detalhes', '$name')") or die(mysql_error());
        if($sql){
            $upload = move_uploaded_file($tmp, $pasta.'/'.$name);
            if($upload){
                echo '<script>alert("Postagem salva com sucesso!");</script>';
            }else{
                echo '<script>alert("A postagem não pôde ser salva corretamente.");</script>';
            }
        }else{
                echo '<script>alert("Desculpe, ocorreu um erro.");</script>';
            }
    }
}
?>
<div id="sendform">
<h2 class="textos" style="width:100%; text-align:center; font-weight:700">Inserir Produto</h2>
<form action="" method="post" enctype="multipart/form-data">
    <a class="textos">Nome do produto:</a><br>
    <input type="text" id="nome" name="nome" maxlength="80"><br>
    <br><a class="textos">Descrição do produto:</a><br>
    <textarea type="text" id="descricao" name="descricao"></textarea>
    <br><a class="textos">Detalhes do produto:</a><br>
    <textarea type="text" id="detalhes" name="detalhes"></textarea>
    <br><a class="textos">Selecione uma imagem para o produto.:</a><br><input type="file" id="foto" name="foto"><br>
    <input type="submit" id="enviar" name="enviar" value="Enviar">
</form>
</div>
<div id="deletar_prod">
<h2 class="textos" style="width:100%; text-align:center; margin-top:50px; font-weight:700">Deletar Produto</h2>
<?php
    if (isset($_POST['apagar']) && $_POST['apagar'] == 'excluir'){
        $deleta = mysql_query("DELETE FROM produtos WHERE id = '$_POST[id]'");
        if ($deleta == '1'){
        echo '<h2 class="textos" style="width:100%; text-align:center;">Produto deletado com sucesso!</h2>';
        }else{ '<h2 class="textos" style="width:100%; text-align:center;">Erro ao deletar o produto.</h2>';
    }
}
?>

<?php
    $sql = "SELECT id, nome FROM produtos ORDER BY data DESC, id DESC";
    $resultado = mysql_query($sql)
    or die (mysql_error());
    if (mysql_num_rows($resultado) == 0)
    echo '<h2 class="textos" style="width:100%; text-align:center; margin-top:0px;">Nenhum registro de produto foi encontrado.</h2>';
?>
<form id="form1" name="form1" method="post" action="" enctype="multipart/form-data">
    <select name="id" id="id">
        <option value="-1">Selecione o produto que deseja deletar</option>
<?php
    while($linha=mysql_fetch_array($resultado)){
    $id = $linha[0];
    $nome = $linha[1];
?>
        <option value="<?php echo $id; ?>"><?php echo $nome; ?></option>
<?php
}
?>
    </select>
    <input type="hidden" name="apagar" value="excluir"/>
    <input class="botao" type="submit" name="excluir" id="excluir" value="Excluir"/>
</form>
</div>
</body>

1 answer

14


In most cases just change everything that starts with mysql for mysqli :) Of course not only that. There are some differences of parameters and some different functions.

Have you seen the documentation? I advise you to continue with the procedural syntax since you are used and the change would be simpler. The syntax working with objects does not bring any advantage other than the organization of the code. Even if it really is advantage is something questionable.

<body>
<?php
if(isset($_POST['enviar'])){
    $nome = mysqli_real_escape_string($conexao, trim($_POST['nome']));
    $descricao = mysqli_real_escape_string($conexao, trim($_POST['descricao']));
    $detalhes = mysqli_real_escape_string($conexao, trim($_POST['detalhes']));
    
    $img = $_FILES['foto'];
    $name = $img['name'];
    $tmp = $img['tmp_name'];
    $size = $img['size'];
    $ext = end((explode('.', $name)));
    $pasta = '../img/produtos';
    $maxSize = 1024 * 1024 * 2;
    $permite = array('jpg','jpeg','png');
    
    if(empty($nome) && empty($descricao) && empty($name)){
        echo '<script>alert("Por favor, preencha o formulário de cadastro de produto corretamente.");</script>';
    }else if(empty($nome)){
        echo '<script>alert("Por favor, preencha o campo Nome.");</script>';
    }else if(empty($descricao)){
        echo '<script>alert("Por favor, preencha o campo Descrição.");</script>';
    }else if(empty($detalhes)){
        echo '<script>alert("Por favor, preencha o campo Detalhes.");</script>';
    }else if(empty($name)){
        echo '<script>alert("Por favor, selecione uma imagem.");</script>';
    }else if(!in_array($ext, $permite)){
        echo '<script>alert("A extensão da imagem selecionada não é suportada.");</script>';
    }else if($maxSize < $size){
        echo '<script>alert("A imagem selecionada é grande demais.");</script>';
    }else{
        $name = uniqid().'.'.$ext;
        $sql = mysqli_query($conexao, "INSERT INTO produtos (nome, descricao, detalhes, imagem) VALUES ('$nome', '$descricao', '$detalhes', '$name')") or die(mysqli_error($conexao));
        if($sql){
            $upload = move_uploaded_file($tmp, $pasta.'/'.$name);
            if($upload){
                echo '<script>alert("Postagem salva com sucesso!");</script>';
            }else{
                echo '<script>alert("A postagem não pôde ser salva corretamente.");</script>';
            }
        }else{
                echo '<script>alert("Desculpe, ocorreu um erro.");</script>';
            }
    }
}
?>
<div id="sendform">
<h2 class="textos" style="width:100%; text-align:center; font-weight:700">Inserir Produto</h2>
<form action="" method="post" enctype="multipart/form-data">
    <a class="textos">Nome do produto:</a><br>
    <input type="text" id="nome" name="nome" maxlength="80"><br>
    <br><a class="textos">Descrição do produto:</a><br>
    <textarea type="text" id="descricao" name="descricao"></textarea>
    <br><a class="textos">Detalhes do produto:</a><br>
    <textarea type="text" id="detalhes" name="detalhes"></textarea>
    <br><a class="textos">Selecione uma imagem para o produto.:</a><br><input type="file" id="foto" name="foto"><br>
    <input type="submit" id="enviar" name="enviar" value="Enviar">
</form>
</div>
<div id="deletar_prod">
<h2 class="textos" style="width:100%; text-align:center; margin-top:50px; font-weight:700">Deletar Produto</h2>
<?php
    if (isset($_POST['apagar']) && $_POST['apagar'] == 'excluir'){
        $deleta = mysqli_query($conexao, "DELETE FROM produtos WHERE id = '$_POST[id]'");
        if ($deleta == '1'){
        echo '<h2 class="textos" style="width:100%; text-align:center;">Produto deletado com sucesso!</h2>';
        }else{ '<h2 class="textos" style="width:100%; text-align:center;">Erro ao deletar o produto.</h2>';
    }
}
?>

<?php
    $sql = "SELECT id, nome FROM produtos ORDER BY data DESC, id DESC";
    $resultado = mysqli_query($conexao, $sql)
    or die (mysqli_error($conexao));
    if (mysqli_num_rows($resultado) == 0)
    echo '<h2 class="textos" style="width:100%; text-align:center; margin-top:0px;">Nenhum registro de produto foi encontrado.</h2>';
?>
<form id="form1" name="form1" method="post" action="" enctype="multipart/form-data">
    <select name="id" id="id">
        <option value="-1">Selecione o produto que deseja deletar</option>
<?php
    while($linha=mysqli_fetch_array($resultado)){
    $id = $linha[0];
    $nome = $linha[1];
?>
        <option value="<?php echo $id; ?>"><?php echo $nome; ?></option>
<?php
}
?>
    </select>
    <input type="hidden" name="apagar" value="excluir"/>
    <input class="botao" type="submit" name="excluir" id="excluir" value="Excluir"/>
</form>
</div>
</body>

I put in the Github for future reference.

Note that the functions in mysqli has a parameter for information on which connection is performing the work.

I haven’t tested it, but it shouldn’t be a problem. Anyway I advise to give a check before, and mainly to study the subject before venturing into it. Then you can make more radical changes, who knows how to take advantage of new features, but it is better to start as simply as possible.

  • didn’t work, I took a look at the documentation, but I couldn’t apply anything that’s said there. My biggest problem is being in the case of the page that displays the comments, do the SELECT of everything and show in the respective places (image, name, description and details).

  • 1

    Are you sure with the mysql works? It didn’t work is very generic, can’t help just with this information.

  • With mysql it worked correctly in every way, both inserting and displaying the records. With mysqli, the following errors appear: Warning: mysqli_query() expects at least 2 Parameters, 1 Given in C: wamp www gruposaobento tendassaassaobento cadastros novoproduto.php on line 89 Warning: mysqli_error() expects Exactly 1 Parameter, 0 Given in C: wamp www gruposaobento tendassaobento cadastros novoproduto.php on line 90

  • Oh yes, I had forgotten that the mysqli always need to have an associated connection, which is one of its advantages. I changed using a variable $conexao, you must use the variable you save the connection to the database.

  • thanks! I made the change and it worked, the errors no longer appear.

  • Another problem, regarding this, Warning: mysqli_real_escape_string() expects Exactly 2 Parameters, 1 Given in C: wamp www gruposaobento tendassaobento cadastros novoproduto.php on line 23, como resolvo?

  • Anyway, I just forgot to change the code. If you are having difficulty identifying this you will have difficulty to do more complex things in programming.

  • Thanks for the clarification. I don’t work with this, but I am developing these simple systems for the company website. My knowledge is very precarious, but I’m interested in learning more.

  • The best way for you to do this is by creating a class for connection and calling on the pages you will be working with connection. If you didn’t know how to create Class, create a connected function and call it on the pages, so avoid exchanging tags directly.

Show 4 more comments

Browser other questions tagged

You are not signed in. Login or sign up in order to post.