0

好吧,考虑到 PHP/HMTL 编程,我是一个绝对的初学者,而且我已经被这些问题困扰了好几天了。

首先,我创建了包含以下列(id、Name、Surname、Telephone_number、Email)的 Mysql 表。然后我成功地创建了阅读表格的表格。现在我想阅读并稍后使用以下代码编辑特定行:

41 <?php
42 $con = mysql_connect("localhost","username","password");
43 mysql_select_db("database", $con);
44 $id=$_GET["id"];
45 $result = mysql_query("SELECT * FROM Table  where id='$id'");
46 $row = mysql_fetch_array($result);
47 ?>

但我得到的只是以下错误:注意:未定义索引:第 44 行 C:\xampp\htdocs\contacts_edit.php 中的 id

任何帮助将不胜感激!

4

5 回答 5

6

您尚未在 URL 中设置GET参数。这就是为什么id没有在你的全局中定义的原因。

为防止出现该问题,请先检查变量:

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

或者

if (!isset($_GET['id']) {
    $_GET['id'] = 0;
}

给你一个简短的提示...

你真的应该看看你已经建立了一个非常大的安全漏洞的 SQL 注入。

不要在 SQL 查询中直接使用$_GET$_POST 。您应该更喜欢使用 PDO 或 MySQLi 的预处理语句。如果您想使用您的解决方案,请将您的 id 转换为一个整数值,如下所示:

$id = (int)$_GET['id'];

那么你有一个默认值 0 当它没有设置时。

于 2012-10-19T07:55:03.973 回答
2

您必须先检查 id 是否已设置

<?php

$con = mysql_connect("localhost","username","password");
mysql_select_db("database", $con);

if(isset($_GET['id'])) {

   $id=$_GET["id"];
   $result = mysql_query("SELECT * FROM Table  where id='$id'");
   $row=mysql_fetch_array($result);
}
?>

更好的方法是使用 pdo 或 mysqli。

如何防止 PHP 中的 SQL 注入?

于 2012-10-19T07:55:40.960 回答
1

我这样做并为我工作

 <?php
 $con = mysql_connect("localhost","***","***");
 mysql_select_db("***", $con);
 if(isset($_GET["id"]) && !empty($_GET["id"])){
    $id= $_GET['id'];
    $result = mysql_query("SELECT * FROM core_usuarios  where id=".$id);
    $row = mysql_fetch_array($result);
    print_r($row);
}
 ?>

顺便说一句,如果您想连接到数据库并且使用“普通 php”,最好使用 PDO PHP http://www.php.net/manual/en/pdo.construct.php

于 2012-10-19T08:05:28.460 回答
-1

你应该有这样的东西

http://site.com/contacts_edit.php?id=1

然后在contacts_edit.php中你可以使用$_GET['id']

再见

于 2012-10-19T07:55:03.750 回答
-1

你应该这样做:

$con = mysql_connect("localhost","username","password");
mysql_select_db("database", $con);
if(isset($_GET['id'])) {
  $id=$_GET["id"];
  $result = mysql_query("SELECT * FROM Table  where id='$id'");
  $row = mysql_fetch_array($result);
}
于 2012-10-19T07:59:59.293 回答