$ _GET未定义索引(来自mysql表的值)

时间:2012-10-19 07:48:56

标签: php mysql phpmyadmin

考虑到PHP / HMTL编程,我是一个绝对的初学者,我几天都遇到这些问题。

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

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

任何帮助将不胜感激!

5 个答案:

答案 0 :(得分:6)

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

要防止该问题,请在以下之前检查变量:

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

或者

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

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

你应该看看SQL-Injections你已经构建了一个非常大的安全漏洞。

请勿在SQL查询中直接使用 $ _ GET $ _ POST 。您应该更喜欢使用PDO或MySQLi准备好的语句。如果你想使用你的解决方案,那么将你的id转换为一个整数值,如下所示:

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

然后你没有设置默认值0。

答案 1 :(得分: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。

How can I prevent SQL injection in PHP?

答案 2 :(得分: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

答案 3 :(得分:-1)

你应该有这样的东西

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

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

再见

答案 4 :(得分:-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);
}