"; while($row=mysql_fetch_assoc($res)) { -6ren">
gpt4 book ai didi

php - MYSQL数据库的问题

转载 作者:太空宇宙 更新时间:2023-11-03 10:28:43 25 4
gpt4 key购买 nike

我编辑了代码,现在页面加载了所有内容,但它没有插入到数据库中:

<body>
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
require("serverInfo.php");
mysql_query("UPDATE `cardLists` SET `AmountLeft` = `AmountLeft` + ".mysql_real_escape_string($_POST['Add'])." WHERE `cardID` = '".mysql_real_escape_string($_POST['Cards'])."'");

echo "\"" .$_POST['Add'] ."\" has been added to the inventory amount for the card \"". $_POST['Cards']. "\"";

mysql_query("INSERT INTO `log` (`changes`, `amount`, `cardID`, `person`, `date`)VALUES('ADDED',".mysql_real_escape_string($_POST['Add']).",
".mysql_real_escape_string($_POST['Cards']).",".mysql_real_escape_string($_POST['Person']).", NOW())") or die (mysql_error());
mysql_close($link);
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<?php require("serverInfo.php"); ?>
<?php
$res = mysql_query("SELECT * FROM cardLists order by cardID") or die(mysql_error());
echo "<select name = 'Cards'>";
while($row=mysql_fetch_assoc($res)) {
echo "<option value=\"$row[cardID]\">$row[cardID]</option>";
}
echo "</select>";
?>
Amount to Add: <input type="text" name="Add" maxlength="8" />
Changes Made By: <select name="Person">
<option value="justin">Justin</option>
<option value="chris">Chris</option>
<option value="matt">Matt</option>
<option value="dan">Dan</option>
<option value="tim">Tim</option>
<option value="amanda">Amanda</option>
</select>
<input type="submit" name ="submit" onClick= "return confirm(
'Are you sure you want to add this amount?');">
</form>
<br />
<input type="button" name="main" value="Return To Main" onclick="window.location.href='index.php';" />
</body>
</html>

最佳答案

除了dnagirl指出的Date保留字:

....VALUES('ADDED','$_POST['Add']'....

你不能在这里使用['x']。您可以尝试:

....VALUES('ADDED','{$_POST['Add']}'....

或者这个,这在字符串文字中是可以的,但有问题,因为它在外面是错误的:

....VALUES('ADDED','$_POST[Add]'....

但这仍然是 SQL 注入(inject)。你需要:

....VALUES('ADDED','".mysql_real_escape_string($_POST['Add'])."'....

还有这个:

"... + ".mysql_real_escape_string($_POST['Add'])." ... "

您没有在该文字周围加上单引号,因此尽管进行了转义调用,您仍然进行了 SQL 注入(inject)。要么在它周围加上引号,要么如果您想确保它始终是一个整数,请使用 intval

(参数化查询很好,你知道。)

mysql_close($link);

那应该做什么? $link 来自哪里?

... action="<?php echo $_SERVER['PHP_SELF']; ?>" ...

echo "<option value=\"$row[cardID]\">$row[cardID]</option>";

echo "\"" .$_POST['Add'] ."\" has been added ..."

HTML 注入(inject)(XSS 风险)。记住你的 htmlspecialchars

onClick= "return confirm('Are you sure you want to add this amount?');"

为此使用 form onsubmit

关于php - MYSQL数据库的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2685982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com