PHP 和 mySQL "UPDATE"实际上没有更新

标签 php mysql sql-update

所以我和我的 friend 得出结论,是 $_email 变量搞砸了一切。只要它是硬编码的,它就可以工作。但是一旦它到处都是 $_email,它就不会了。消息以“已更新”状态发送,但并未更新。

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>';

如您所见,我们将电子邮件地址放在那里用于测试目的...

最佳答案

检查 ID 是否与您打算更新的内容相匹配。 确保在更新之前和之后打印 $_id 和 $_email。

@user710502:您不需要在 PHP 中用双引号分隔引号。无论如何它都会读取它,唯一你可能会打扰的是如果你正在从数组中读取 例如:

"UPATE midterm SET email='".$POST['email']."'"

关于PHP 和 mySQL "UPDATE"实际上没有更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15216847/

相关文章:

mysql - 如何从delphi在SQL中使用节中的变量

mysql - Cloud9 IDE : Cannot Connect to MySQL via Node

java - 使用 Hibernate 连接到 MySQL 后执行意外查询

php - 如何为 Laravel 5 建立多层 hasMany() 关系?

php - mysql-server 没有安装在 ubuntu 上

php - 将多行更新到 WordPress 表中

MySQL - 搜索 table1.field 的内容并将其替换为 table2.otherfield 的内容

sql - 使用多个 select 语句插入临时表

php - 在 PDO 中使用 case 更新多行时参数编号无效

php - MySQL 文件下载速度限制