使用php更新mysql记录不工作

使用php更新mysql记录不工作,php,mysql,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

我知道代码很混乱而且很不完善。但是,当尝试使用下面的代码更新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();
    }
}

中缺少一个

Issue='$isuse,
仅此一点就将打断查询的其余部分。你把问题拼错了。应该是

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,它会自动为您捕获所有这些问题

也就是说,请;
mysql.*
函数已经过时,而且不安全。它们在PHP7中被完全删除,并且已经被弃用很长时间了。使用或代替


而且,你对你的工作非常开放。这是一个严重的安全漏洞;在您修复之前,您的代码永远不应该投入生产。

我们必须包含disclamer,这真是太神奇了!当然,即使在今天也不要使用mysql…@vee是的,那个库不会消亡。他还拼错了这个问题。可能想更新您的答案。@vee可悲的是,99%的人在读到关于不使用
mysqli\uu
函数且易受sql注入攻击的警告时,都会忽略它。“这让我害怕,这些人中的一些人可能会继续设计投入生产的系统。”LukePark,另外,我更喜欢PDO。我还不能确定是否会这样说,但也许StackOverflow中的积分系统鼓励人们立即提问,而不是阅读任何有关此问题的弃用警告。仍然会收到错误消息,其中第1行的ID='您也拼写错误。修复了拼写错误,但仍然不知道为什么我会收到“您”SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在第1行错误“WHERE ID='ID''附近使用的正确语法。删除“$price”后的逗号。通常当它说有语法错误“near'blah blah…”时,错误就在“blah blah…”的开头