如果某些内容不同,更新将不起作用

时间:2019-10-14 18:00:55

标签: php mysql

如果我没有更改字段值中的至少1个,则更新失败。

插入正常。

我的git https://github.com/emerson-cs-santos/TSI-PI_2-2019/blob/master/PHP/novo_user.php

如果我继续这样做: $ status = $ status。 ''; 可行,但听起来是正确的解决方案

-- MYSQL --
CREATE DATABASE IF NOT EXISTS SENAC_PI;

USE SENAC_PI;
CREATE TABLE IF NOT EXISTS USUARIOS 
(
    codigo  INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY
    ,nome   VARCHAR(20) NOT NULL
    ,senha  VARCHAR(200) NOT NULL
    ,tipo   VARCHAR(20) NOT NULL
)

;


-- PHP --
<?php

// Open a Connection to MySQL
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "SENAC_PI";

// Create connection
$conn = new mysqli($servername, $username, $password,$dbname);

// Check connection
if ($conn->connect_error) 
{
    die("Connection failed: " . $conn->connect_error);
    echo 'errado';
    return;
} 


$query = 'use SENAC_PI';
$result = $conn->query($query);

$codigo = 0;
$login = 'teste';
$senha = '123';
$status = 'Ativo';


$query = 
   " INSERT INTO USUARIOS ( codigo, nome, senha, tipo ) Values (?, ?, ?, ?)";

    $querytratada = $conn->prepare($query); 
    $querytratada->bind_param("isss",$codigo,$login,$senha,$status);

    $querytratada->execute();

    if ($querytratada->affected_rows > 0) 
    {
        $resposta = 'ok';
    } 
    else 
    {
        $resposta = 'erro';
    }


-- update
    $query = 
    " UPDATE USUARIOS SET nome = ? ,senha = ? , tipo = ? where codigo = ? ";
    $querytratada = $conn->prepare($query); 
    $querytratada->bind_param("sssi",$login,$senha,$status,$codigo);

    $querytratada->execute();

    if ($querytratada->affected_rows > 0) 
    {
        $resposta = 'ok';
    } 
    else 
    {
        $resposta = 'erro';
    }

}

?>

如果我不更改字段值中的至少1个,则查询返回:受影响的行= 0

1 个答案:

答案 0 :(得分:0)

感谢奈杰尔,我设法验证了结果。

我正在使用“ affected_rows” 来验证错误,但是如果用户未进行任何更改,我的代码将作为错误返回。

使用“行匹配” “警告” ,我可以确保查询没有错误

我针对该问题的最终代码:     preg_match_all('/(\ S [^:] +):(\ d +)/',$ conn-> info,$ querytratada);     $ info = array_combine($ querytratada [1],$ querytratada [2]);

Public Sub AddMenu()
    Dim menu As CommandBar

    ' Ugly workaround for multiple menus 
    On Error GoTo Handler
    While True
        Application.CommandBars(TOOLBAR_NAME).Delete
    Wend
    Handler:
    'Just go on

    Set menu = Application.CommandBars.Add(MENUNAME)
    With menu
        ' [Do menu config]
    End with
End Sub

无论如何,再次感谢奈杰尔!