php - PHP:更新行时遇到问题
问题描述
我在更新数据库行时遇到问题。插入很好,但是当我试图编辑我的行时,会发生一些奇怪的事情:
我在另一个页面中点击了编辑按钮,然后用户被定向到 addnew.php 页面并且所有输入都填充了我们要编辑的行的数据。当我单击更新按钮时,会发生此错误。
这是我的 addnew.php 代码:
<?php
session_start();
if (!isset($_SESSION['loggedin']) || $_SESSION['loggedin'] == false) {
header('location: login');
}
require_once '../core/init.php';
require_once '../helpers/helper.php';
include 'includes/header.php';
$sqlAdd = "";
//Edit
if (isset($_GET['edit'])) {
$edit_id = (int)$_GET['edit'];
$sql = "SELECT * FROM words WHERE id = '$edit_id'";
$getWord = $db->query($sql);
$word = mysqli_fetch_assoc($getWord);
}
//Add
if (isset($_POST['submit'])) {
$word = mysqli_real_escape_string($db, sanitize($_POST['word']));
$phonetic = mysqli_real_escape_string($db, sanitize($_POST['phonetic']));
$meaning = mysqli_real_escape_string($db, sanitize($_POST['meaning']));
$engMeaning = mysqli_real_escape_string($db, sanitize($_POST['engMeaning']));
$example = mysqli_real_escape_string($db, sanitize($_POST['example']));
$eMeaning = mysqli_real_escape_string($db, sanitize($_POST['eMeaning']));
if ($word == '' ||
$phonetic == '' ||
$meaning == '' ||
$engMeaning == '' ||
$example == '' ||
$eMeaning == ''
) {
echo '<p style="text-align:center;
background-color: #E74C3C;
margin-top:20px;
color:white;
">All forms must be filled</p>';
}else {
if (isset($_GET['edit'])) {
$sqlAdd = "UPDATE words SET word = '$word', phonetic = '$phonetic', meaning = '$meaning', engMeaning = '$engMeaning',
example = '$example', exampleMeaning = '$eMeaning' WHERE id = '$edit_id'";
}else {
$sqlAdd = "INSERT INTO words (word, meaning, engMeaning, example, exampleMeaning,phonetic)
VALUES ('$word','$meaning','$engMeaning','$example','$eMeaning', '$phonetic')";
}
echo $sqlAdd;
// $db->query($sqlAdd);
}
}
?>
<link rel="stylesheet" href="../styles/admin-style.css">
<title>Add new Words</title>
<div class="container2">
<?= var_dump($word); ?>
<form autocomplete="off" method="post">
<?= var_dump($word); ?>
<input type="text" name="word" placeholder="Word" value="<?= ((isset($_GET['edit']))?$word['word']:''); ?>">
<input type="text" name="phonetic" placeholder="Phonetic" value="<?= ((isset($_GET['edit']))?$word['phonetic']:''); ?>">
<input type="text" name="meaning" placeholder="meaning" value="<?= ((isset($_GET['edit']))?$word['meaning']:''); ?>">
<input type="text" name="engMeaning" placeholder="English Meaning" value="<?= ((isset($_GET['edit']))?$word['engMeaning']:''); ?>">
<textarea type="text" name="example" placeholder="Example" rows="5"><?= ((isset($_GET['edit']))?$word['example']:''); ?></textarea>
<textarea type="text" name="eMeaning" placeholder="example meaning" rows="5"><?= ((isset($_GET['edit']))?$word['exampleMeaning']:''); ?></textarea>
<button type="submit" name="submit"><?= ((isset($_GET['edit']))?'Update':'Add'); ?></button>
</form>
</div>
和错误(其中之一):
警告:C:\wamp64\www\EnglishProject\admin\addnew.php 中第 55 行调用堆栈#TimeMemoryFunctionLocation 10.0002266584{main}( )...\addnew.php:0 a">
var_dump 结果:
array (size=8)
'id' => string '23' (length=2)
'word' => string 'a1aaaaaa' (length=8)
'meaning' => string 'sssaaaa' (length=7)
'engMeaning' => string 'assssssssa' (length=10)
'example' => string 'aaaaaaaaaaaaaaas' (length=16)
'exampleMeaning' => string 'saaaaaaaaaaaa' (length=13)
'phonetic' => string 'aaasss' (length=6)
'views' => string '0' (length=1)
解决方案
您$word['word']
在 HTML 部分中使用。但是您还没有分配变量 $word['word']
。你只有$word
.
而不是使用$word['example']
use $example
。其他变量也一样。
编辑:
关于您的代码的信息不足。但是您可以在输入标签上尝试这样的操作 ((isset($word['word']))?$word['word']:'');
。这不是一个好的解决方案。但是你必须学会调试你的代码。
推荐阅读
- excel - 每次刷新页面时循环更改特定单元格中字体颜色的范围
- sql - 重命名 Pivot 查询中的列名并将其时间值格式化为 HH:MM:SS 格式
- sql - 带有包含二进制数据的 WHERE 子句的 SQL 查询
- javascript - 循环块后Javascript json对象为空
- javascript - 无法访问使用 React.lazy 导入的组件的静态属性
- azure-api-management - APIM 处于消费模式 - 通过 /status-0123456789abcdef 获取 Azure APIM 运行状况检查返回“找不到资源”
- deep-learning - 在与图像翻译非常相似的任务中,如何处理 UNet 编码器/解码器 CNN 中的严重过拟合?
- asynchronous - 如何编写一个需要消费者将切片的内容memcpy到自己的分配中的流?
- amazon-web-services - AWS ALB - 如果重新创建底层 ALB,是否需要新证书?
- c# - 如何从 c# 控制台应用程序中的用户输入创建多个对象?