我知道代码很乱并且非常不完美。但是,当尝试使用下面的代码更新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();
}
}
答案 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中被删除,并且已经被弃用了很长时间。请改用MySQLi
或PDO
。
此外,您对SQL injection持开放态度。这是一个严重的安全漏洞;在您修复之前,您的代码永远不会投入生产。