未识别的索引/非法字符串偏移量

时间:2012-10-12 19:08:36

标签: php string web content-management-system

首先,我道歉的是问题标题没有解释得太多,我是PHP新手,发现很难说出问题,因为我甚至不确定是什么问题。

这是PHP

    <?php
    include 'includes/connection.php';

    $pName = $_POST['pName'];
    $pAuth = $_POST['pAuth'];
    $pCon = $_POST['pCon'];
    $Page = $_POST['Page'];
    $id = $_POST['id'];

    $update = "UPDATE content SET POST_TITLE = '$pname(pname)',POST_AUTHOR = '$pauth(pauth)',POST_CONTENT = '$pcon(pcon)',PAGE = '$page(page) WHERE ID = '$id[id]'";

    $result = mysql_query($update) or die (mysql_error());

    Header("Location:admin.php?refer=editsuccess");
?>

和错误,

Notice: Undefined index: pauth in C:\xampp\htdocs\cms\editp.php on line 5

Warning: Illegal string offset 'id' in C:\xampp\htdocs\cms\editp.php on line 10

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

这里有几点需要注意。

由于您尝试将变量插入查询字符串的方式,您收到警告和通知。首先将变量从$ _POST中拉出并放入局部变量。但是,您尝试访问它们,而不是使用这些变量,就像它们是函数和数组一样。记住PHP中的变量名称区分大小写也很重要。你也错过了一两句话。

查询看起来应该更像这样:

$update = "UPDATE content SET POST_TITLE = '$pName', POST_AUTHOR = '$pAuth', POST_CONTENT = '$pCon', PAGE = '$Page' WHERE ID = '$id'";

话虽如此,这个查询本质上是不安全的,因为用户可以非常轻松地alter your query并对您的数据库执行各种有害的事情。

mysql_函数被认为是不安全和过时的,因此您可以使用两个更现代的mysql包装中的一个替换它们来解决与SQL注入相关的问题:mysqli或{{3} }。

答案 1 :(得分:1)

我认为你的mysql查询应该是:

$update = "UPDATE content SET POST_TITLE = '$pname',POST_AUTHOR = '$pauth',POST_CONTENT = '$pcon',PAGE = '$page' WHERE ID = '$id'";