【问题标题】:Undefined İndex: id in php [duplicate]未定义的索引:php中的id [重复]
【发布时间】:2020-08-10 13:23:23
【问题描述】:

我在 PHP 代码中遇到问题。我从电子书中得到了一些代码,但是当我尝试运行系统时,它给出了一些错误。我通过给出适当的引号修复了一些错误,但现在我遇到了一些其他错误。我想要编辑->用 mysql 申请表格

如果有人帮助我解决以下错误,我会非常高兴:

注意:未定义索引:第 17 行 C:\xampp\htdocs\kayit_defteri\edit.php 中的 id

我的 edit.php 文件

<!DOCTYPE html>
<html>
<head>
	<title>Kayıt Defteri</title>
	<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
	<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
	<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
	<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
</head>
<body>

	<?php

include ("db.php");

	$id = $_GET["id"];

	$select = $db->prepare("SELECT * FROM adres WHERE id = :id");
	$select->bindParam(":id", $id, PDO::PARAM_INT);
	$select->execute();
	$row = $select->fetch(PDO::FETCH_ASSOC);

	 ?>

<div class="container" style="padding:20px;">
		<div class="row">
			<div class="col-md-12">
				<h2 style="color:royalblue; font-size:28px;">Hemen Kayıt Ekleyin</h2>
			</div>
			
		</div>
		<div class="row">
			<div class="col-md-4">

    <form method="GET" action="edit.php">
  	<label>İsim</label>
    <input type="text" class="form-control" name ="name" value="<?php echo $row["name"];?>">
    <label>Soyisim</label>
    <input type="text" class="form-control" name ="surname" value="<?php echo $row["surname"];?>">
    <label>Telefon</label>
    <input type="number" class="form-control" name ="telephone" value="<?php echo $row["telephone"];?>">
    <label>Web Sitesi</label>
    <input type="text" class="form-control" name="web" value="<?php echo $row["web"];?>">
    <label>Ödeyeceği Tutar</label>
    <input type="text" class="form-control" name ="tutar" value="<?php echo $row["tutar"];?>">
    <label>Notlar</label>
    <textarea rows="2" cols="46" class="form-control" placeholder="Notunuz varsa yazın..." name="note"><?php echo $row["note"];?></textarea>
  <br>
  <input type="hidden" name="id" value="<?php echo $row["id"]; ?>">

  <button type="submit" class="btn btn-primary">Gönder</button>
  <a href="list.php"><button type="button" class="btn btn-danger">Vazgeç</button></a>
</form>



			</div>
		</div>
	</div>
</body>
</html>

我的 update.php 文件

<?php 

include ("db.php");

if($_POST) {

	$name 		= $_POST["name"];
	$surname 	= $_POST["surname"];
	$telephone 	= $_POST["telephone"];
	$web 		= $_POST["web"];
	$tutar		= $_POST["tutar"];
	$note		= $_POST["note"];
	$id   		= $_POST["id"];


	$data = array(

	"name" 		=> $name,
	"surname" 	=> $surname,
	"telephone" => $telephone,
	"web" 		=> $web,
	"tutar" 	=> $tutar,
	"note" 		=> $note,
	"id" 		=> $id,

);


$update = $db->prepare("UPDATE adres SET 
	name=:name,
	surname=:surname,
	telephone=:telephone,
	web=:web,
	tutar=:tutar,
	note=:note,
	WHERE id=:id

	");

$result = $update->execute($data);

if($result) {
	echo "Kayıt işlemi başarılı bir şekilde gerçekleşti" . "<hr>" . "<a href='list.php'>Geri Dönün</a>";
} else {
	echo "Kayıt işlemi pekte başarılı geçmedi. Tekrar deneyin.";
}

}

 ?>

【问题讨论】:

  • 您使用什么 URL 来加载 edit.php 页面?是否包含id 查询参数,例如edit.php?id=123?
  • 可以看到表单中的SQL数据。但不幸的是,当我要编辑页面时刷新时没有错误消息
  • note=:note, 中还有一个尾随逗号
  • “没有错误消息” - 你可能没有为你工作的错误报告。
  • @SECRAX - 不要将此关闭视为气馁。您实际上做了一个很棒的问题帖子,其中包含所有相关代码以及至少对于简单类型的问题来说“足够”的上下文。你错过的唯一一步是从你的问题中退后一点点,然后用谷歌搜索错误,这只是一个简单的变量错误。然后下一个错误也是如此,依此类推。这就是你学习的方式,通过做,弄得一团糟,并通过找到其他已经做过同样事情的人来找出原因:)

标签: php indexing undefined


【解决方案1】:

从您的错误消息中的行号来看,它似乎告诉您找不到 $_GET 参数(url 参数)

这里有两个简单的解决方案,只需要换行。

三元运算符:

$id = (isset($_GET["id"]) ? $_GET["id"] : 0);

如果没有传入名为id 的url 参数,则将0 替换为您的默认值。

https://www.php.net/manual/en/language.operators.comparison.php

表达式 (expr1) ? (expr2) : (expr3) 如果 expr1 则计算为 expr2 计算结果为 TRUE,如果 expr1 计算结果为 FALSE,则计算 expr3。

从 PHP 5.3 开始,可以省略三元运算符的中间部分。表达式 expr1 ?: 如果 expr1 求值,则 expr3 返回 expr1 为 TRUE,否则为 expr3。

Null Coalescing Operator(仅限 php 7.0+):

$id = $_GET['id'] ?? 0;

相同的文档链接,只需再次向下滚动:https://www.php.net/manual/en/language.operators.comparison.php

我个人更喜欢标准三元,因为它也向后兼容,如果向后兼容性不重要,总是经销商选择。

【讨论】:

  • 解析错误:语法错误,意外';'在第 19 行的 C:\xampp\htdocs\kayit_defteri\edit.php 中
  • 复制粘贴错字,数(和),现在更新
  • 可以看到表单中的SQL数据。但不幸的是,当我要编辑页面时刷新时没有错误消息
  • @Phil,我实际上做了额外的括号来帮助避免拼写错误;)个人偏好总是存在的,我只是发现它们更具可读性和清晰性,特别是如果它们是(尽管你永远不应该这样做)嵌套。上面的 php doco 链接解释了为什么不嵌套,如果有人稍后阅读:)
  • 我避免像瘟疫一样嵌套三元(不,另一种瘟疫)。一方面,LTR evaluation 引起了我的注意
猜你喜欢
  • 2011-08-06
  • 1970-01-01
  • 2014-01-27
  • 2011-06-18
  • 1970-01-01
  • 2012-11-14
  • 2019-03-05
  • 1970-01-01
相关资源
最近更新 更多