使用php无法正常更新mysql记录

时间:2016-04-24 02:02:22

标签: php mysql

我知道代码很乱并且非常不完美。但是,当尝试使用下面的代码更新mysql记录时,我更新了。现在它不会发布到mysql数据库

感谢您的提前帮助

<?php
define('DB_NAME', 'comics');
   define('DB_USER', 'root');
   define('DB_PASSWORD', '');
   define('DB_HOST', 'localhost');

   $link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);

   if (!link) {
    die('Could not connect: ' . mysql_error());
   }

   $db_selected = mysql_select_db(DB_NAME, $link);

   if (!$db_selected) {
    die('Can\'t use ' . DB_NAME . ': ' . mysql_error());
}

if (!isset($_GET['update'])){
        $q = "SELECT * FROM comics where ID = '$_GET[id]'";
        $result = mysql_query($q);
        $comics = mysql_fetch_array($result);
    }

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


    $email = mysql_real_escape_string($_GET["email"]);
    $title = mysql_real_escape_string($_GET["title"]);
    $issue = mysql_real_escape_string($_GET["issue"]);
    $edition = mysql_real_escape_string($_GET["edition"]);
    $publisher = mysql_real_escape_string($_GET["publisher"]);
    $condition = mysql_real_escape_string($_GET["condition"]);
    $price = mysql_real_escape_string($_GET["price"]);

    $targetid = intval($_GET["id"]);

    $sql =  "UPDATE comics SET Email='$email', Title='$title',     Issue='$issue', Edition='$edition', Publisher='$publisher',     Quality='$condition', Cost='$price' WHERE ID = '$targetid' ";

$myData = mysql_query($sql,$link);
if(!$myData) {die(mysql_error());}

if ($myData == TRUE) {
header('Location: index.html');
exit();
    }
}

1 个答案:

答案 0 :(得分:3)

你错过了<{p>中的'

Issue='$isuse,

仅此一项将打破查询的其余部分。你拼错了issue。它应该是

Issue='$issue',

您的WHERE子句之前还有一个额外的逗号,并且您在查询中使用$id,但您从未定义过(我认为您必须指$targetid)。整个事情应该是:

$sql =  "UPDATE comics SET Email='$email', Title='$title',     Issue='$issue', Edition='$edition', Publisher='$publisher', Quality='$condition',     Cost='$price' WHERE ID = $targetid ";

你真的应该使用像PHPStorm这样的IDE(没有隶属关系),它会自动为你解决所有这些问题。

那就是说don't use mysql_*; mysql_*函数已过时,deprecated且不安全。它们完全在PHP 7中被删除,并且已经被弃用了很长时间。请改用MySQLiPDO

此外,您对SQL injection持开放态度。这是一个严重的安全漏洞;在您修复之前,您的代码永远不会投入生产。