使用php更新mysql记录不工作
我知道代码很混乱而且很不完善。但是,当尝试使用下面的代码更新mysql记录时,我更新了以下代码。现在它不会发布到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
<?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…”的开头