PHP和mySQL“更新”实际上并没有更新

PHP和mySQL“更新”实际上并没有更新,php,mysql,sql-update,Php,Mysql,Sql Update,所以我和我的朋友得出结论,是$u电子邮件变量把一切都搞砸了。只要它是硬编码的,它就可以工作。但是,一旦它作为一个美元的电子邮件留在各地,它不会。消息将以更新的形式传递,但不会更新 require_once('appVars6.php'); require_once('connectVars6.php'); $_dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); $_id = $_GET['id']; $_queryOne =

所以我和我的朋友得出结论,是$u电子邮件变量把一切都搞砸了。只要它是硬编码的,它就可以工作。但是,一旦它作为一个美元的电子邮件留在各地,它不会。消息将以更新的形式传递,但不会更新

require_once('appVars6.php');
require_once('connectVars6.php');
$_dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
$_id = $_GET['id'];
$_queryOne = "SELECT * FROM midterm WHERE id = '$_id'";
$_resultOne = mysqli_query($_dbc, $_queryOne) or die ('Error Querying Database');
while ($_row = mysqli_fetch_array($_resultOne)) {
echo '<form class="update" method="post" action="MT_vjones_udpateRecord.php?id=' . $_id . '">';
echo '<input type="hidden" name="id" id="id" value="' . $_row['id'] . '" />';
echo '<input type="text" name="firstName" id="firstName" value="' . $_row['firstName'] . '" /><br />';
echo '<input type="text" name="lastName" id="lastName" value="' . $_row['lastName'] . '" /><br />';
echo '<input type="text" name="email" id="email" value="' . $_row['email'] . '" /><br />';
echo '</form>';
}
if ( isset($_GET['firstName']) && isset($_GET['lastName']) && isset($_GET['email'])) {
$_id = $_GET['id'];
$_firstName = $_GET['firstName'];
$_lastName = $_GET['lastName'];
$_email = $_GET['email'];   
}
else if ( isset($_POST['firstName']) && isset($_POST['lastName']) && isset($_POST['email'])) {
$_id = $_POST['id'];
$_firstName = mysqli_real_escape_string($_dbc, trim($_POST['firstName']));
$_lastName = mysqli_real_escape_string($_dbc, trim($_POST['lastName']));
$_email = mysqli_real_escape_string($_dbc, trim($_POST['email']));
}
else {
echo '<br />';
echo '<p class="error">Sorry, no record was selected.</p>';
}
if(isset($_POST['submit'])) {
if ($_POST['confirm'] == 'Yes') {
//$_dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
$_query = "UPDATE midterm " .
"SET email = '$_email'" .
"WHERE id = $_id" ;
$_result = mysqli_query($_dbc, $_query) or die (mysqli_error($_dbc));
mysqli_close($_dbc);
echo '<p>The record of ' . $_firstName . ' ' . $_lastName . ' for ' . $_email . ' was successfully updated.';
}
else {
echo '<p class="error">The record was not updated.</p>';
}
}
else if (isset($_id) && isset($_firstName) && isset($_lastName) && isset($_email)) {
echo '<p>Are you sure you want to update the following record?</p>';
/*echo '<form class="update" method="post" action="MT_vjones_updateRecord.php">';
echo '<input type="text" name="firstName" id="firstName" value="' . $_firstName . '" /><br />';
echo '<input type="text" name="lastName" id="lastName" value="' . $_lastName . '" /><br />';
echo '<input type="text" name="email" id="email" value="' . $_email . '" /><br />';
echo '</form>';*/
echo '<form class="update" method="post" action="MT_vjones_updateRecord.php?id=' . $_id . '">';
echo '<div class="yesNo"><input class="radio" type="radio" name="confirm" value="Yes" /> Yes </div><br />';
echo '<div class="yesNo"><input class="radio" type="radio" name="confirm" value="No" checked="checked" /> No </div><br /><br />';
echo '<input class="applyBtn" type="submit" value="UPDATE" name="submit" />';
echo '<input type="hidden" name="id" value="' . $_id . '" />';
echo '<input type="hidden" name="firstName" value="' . $_firstName . '" />';
echo '<input type="hidden" name="lastName" value="' . $_lastName . '" />';
echo '<input type="hidden" name="email" value="*testBACK2FUN@test.com*" />';
}
echo '<p><a href="MT_vjones_adminAccess.php">&lt;&lt; Back to the Admin Page</a></p>';
正如你所看到的,我们把电子邮件地址放在那里用于测试目的

  $_query = "UPDATE midterm " .
            "SET email = '$_email' WHERE id = '$_id'" ;
应该是

$_query = "UPDATE midterm " .
          "SET email = $_email".
          "WHERE id = $_id " ;

检查id是否与您要更新的内容匹配。 请确保在更新之前和之后打印$\u id和$\u电子邮件

@user710502:在PHP中,不需要用双引号分隔引号。不管怎么说,它都会读取它,唯一一次您可能会麻烦的是,如果您正在从数组中读取 例如:

原因是您在变量之前使用了$\ux,它不是有效的变量声明

因为$\是为php中的超级全局保留的,即$\会话、$\服务器、$\发布、$\获取、$\ COOKIE等

如果这不是您的问题,那么您需要按如下所示处理变量

$_query = "UPDATE midterm SET email = '".$_email."' WHERE id = '".$_id."'" ;
解决了!表格问题

应该是:

<?php
require_once('appVars6.php');
require_once('connectVars6.php');

$_dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

$_id = $_GET['id'];
$_queryOne = "SELECT * FROM midterm WHERE id = '$_id'";
$_resultOne = mysqli_query($_dbc, $_queryOne) or die ('Error Querying Database');

while ($_row = mysqli_fetch_array($_resultOne)) {
    echo '<form class="update" method="post" action="MT_vjones_udpateRecord.php?id=' . $_id . '">';
    echo '<input type="hidden" name="id" id="id" value="' . $_row['id'] . '" />';
    echo '<input type="hidden" name="firstName" id="firstName" value="' . $_row['firstName'] . '" />';
    echo '<input type="hidden" name="lastName" id="lastName" value="' . $_row['lastName'] . '" />';
    echo '<input type="hidden" name="email" id="email" value="' . $_row['email'] . '" />';
    echo '</form>';
}

if ( isset($_GET['firstName']) && isset($_GET['lastName']) && isset($_GET['email'])) {
    $_id = $_GET['id'];
    $_firstName = $_GET['firstName'];
    $_lastName = $_GET['lastName'];
    $_email = $_GET['email'];   
}

    else if ( isset($_POST['firstName']) && isset($_POST['lastName']) && isset($_POST['email'])) {
        $_id = $_POST['id'];
        $_firstName = mysqli_real_escape_string($_dbc, trim($_POST['firstName']));
        $_lastName = mysqli_real_escape_string($_dbc, trim($_POST['lastName']));
        $_email = mysqli_real_escape_string($_dbc, trim($_POST['email']));
    }

        else {
                echo '<br />';
                echo '<p class="error">Sorry, no record was selected.</p>';
        }

if(isset($_POST['submit'])) {
    if ($_POST['confirm'] == 'Yes') {

    $_query = "UPDATE midterm " .
                "SET email = '$_email'" .
                "WHERE id = $_id" ;

    $_result = mysqli_query($_dbc, $_query) or die (mysqli_error($_dbc));

    mysqli_close($_dbc);
    echo '<p>The record of ' . $_firstName . ' ' . $_lastName . ' for ' . $_email . ' was successfully updated.';
    }

        else {
            echo '<p class="error">The record was not updated.</p>';
        }
}

    else if (isset($_id) && isset($_firstName) && isset($_lastName) && isset($_email)) {
        echo '<p>Are you sure you want to update the following record?</p>';
        echo '<form class="update" method="post" action="MT_vjones_updateRecord.php?id=' . $_id . '">';
        echo '<div class="yesNo"><input class="radio" type="radio" name="confirm" value="Yes" /> Yes </div><br />';
        echo '<div class="yesNo"><input class="radio" type="radio" name="confirm" value="No" checked="checked" /> No </div><br /><br />';
        echo '<input type="hidden" name="id" value="' . $_id . '" />';
        echo '<input type="text" name="firstName" value="' . $_firstName . '" /><br />';
        echo '<input type="text" name="lastName" value="' . $_lastName . '" /><br />';
        echo '<input type="text" name="email" value="' . $_email . '" />';
        echo '<input class="applyBtn" type="submit" value="UPDATE" name="submit" />';
    }

echo '<p><a href="MT_vjones_adminAccess.php">&lt;&lt; Back to the Admin Page</a></p>';
?>

为什么要在一个页面上连接到数据库两次?您是否检查了数据库是否已连接,或者查询视图页面源报告了错误,这将是一个良好的betIt连接。如果我输入硬编码的值,它会在数据库中更新它们。你需要清理你的输入,孩子。你需要一点来在这方面取得进展。我们不会为您进行调试,您需要将其缩小到一个特定的问题。但如果他这样做:$\u result=mysqli\u query$\u dbc,$\u query或die mysqli\u error$\u dbc;他应该得到mysql的错误。据我所知,没有错误。它通知我它已更新。这也不管用。说它更新了,但没有。是的,Ravinder让我意识到了这一点,我做了一些php,谢谢你,不是这样的可用于所有变量。
<?php
require_once('appVars6.php');
require_once('connectVars6.php');

$_dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

$_id = $_GET['id'];
$_queryOne = "SELECT * FROM midterm WHERE id = '$_id'";
$_resultOne = mysqli_query($_dbc, $_queryOne) or die ('Error Querying Database');

while ($_row = mysqli_fetch_array($_resultOne)) {
    echo '<form class="update" method="post" action="MT_vjones_udpateRecord.php?id=' . $_id . '">';
    echo '<input type="hidden" name="id" id="id" value="' . $_row['id'] . '" />';
    echo '<input type="hidden" name="firstName" id="firstName" value="' . $_row['firstName'] . '" />';
    echo '<input type="hidden" name="lastName" id="lastName" value="' . $_row['lastName'] . '" />';
    echo '<input type="hidden" name="email" id="email" value="' . $_row['email'] . '" />';
    echo '</form>';
}

if ( isset($_GET['firstName']) && isset($_GET['lastName']) && isset($_GET['email'])) {
    $_id = $_GET['id'];
    $_firstName = $_GET['firstName'];
    $_lastName = $_GET['lastName'];
    $_email = $_GET['email'];   
}

    else if ( isset($_POST['firstName']) && isset($_POST['lastName']) && isset($_POST['email'])) {
        $_id = $_POST['id'];
        $_firstName = mysqli_real_escape_string($_dbc, trim($_POST['firstName']));
        $_lastName = mysqli_real_escape_string($_dbc, trim($_POST['lastName']));
        $_email = mysqli_real_escape_string($_dbc, trim($_POST['email']));
    }

        else {
                echo '<br />';
                echo '<p class="error">Sorry, no record was selected.</p>';
        }

if(isset($_POST['submit'])) {
    if ($_POST['confirm'] == 'Yes') {

    $_query = "UPDATE midterm " .
                "SET email = '$_email'" .
                "WHERE id = $_id" ;

    $_result = mysqli_query($_dbc, $_query) or die (mysqli_error($_dbc));

    mysqli_close($_dbc);
    echo '<p>The record of ' . $_firstName . ' ' . $_lastName . ' for ' . $_email . ' was successfully updated.';
    }

        else {
            echo '<p class="error">The record was not updated.</p>';
        }
}

    else if (isset($_id) && isset($_firstName) && isset($_lastName) && isset($_email)) {
        echo '<p>Are you sure you want to update the following record?</p>';
        echo '<form class="update" method="post" action="MT_vjones_updateRecord.php?id=' . $_id . '">';
        echo '<div class="yesNo"><input class="radio" type="radio" name="confirm" value="Yes" /> Yes </div><br />';
        echo '<div class="yesNo"><input class="radio" type="radio" name="confirm" value="No" checked="checked" /> No </div><br /><br />';
        echo '<input type="hidden" name="id" value="' . $_id . '" />';
        echo '<input type="text" name="firstName" value="' . $_firstName . '" /><br />';
        echo '<input type="text" name="lastName" value="' . $_lastName . '" /><br />';
        echo '<input type="text" name="email" value="' . $_email . '" />';
        echo '<input class="applyBtn" type="submit" value="UPDATE" name="submit" />';
    }

echo '<p><a href="MT_vjones_adminAccess.php">&lt;&lt; Back to the Admin Page</a></p>';
?>