gpt4 book ai didi

php - 表单未发布到 MySQL 数据库

转载 作者:行者123 更新时间:2023-11-29 11:41:15 25 4
gpt4 key购买 nike

我正在尝试将数据从文本字段发送到我的数据库。当我运行代码时,我没有收到任何错误。但代码并未将数据发布到数据库。我看不出哪里出了问题,有人可以看看哪里出了问题吗?

index.php

<?php 
session_start();
?>
<html>
<form name="reaction" method="post" action="./send/send1.php">
<input type="text" class="form-control" id="data_1" name="data_1" placeholder="Data 1" />

<button name="send">Send</button>
</form>
</html>

发送1.php

<?php 
session_start();

?>
<html>
<body>
<table>
<?php
$correct = true;

$data_1 = $_POST['data_1'] ;

?>
</table>
<?php
if($correct){
$db = new PDO('mysql:host=localhost;dbname=database', 'root', '');
$query = "UPDATE table SET data_1=" . $data_1 . " WHERE id='" . $_SESSION['ID'] ."'";
$stmt = $db->prepare($query);
$stmt->execute(array($adres_1));

echo "<br /><br />Success.<br />\n";
} else {

echo "<br /><br />Error.<br />\n";
}
?>
</body>
</html>

最佳答案

a) 您的脚本需要更多错误处理。
在访问 $_POST['data_1'] 之前,您应该测试它的存在,例如通过 isset()
您的数据库代码也没有任何错误处理。要么 set the error mode to PDO::ERRMODE_EXCEPTION 或(/和)确保测试 PDO::* 方法的每个返回值。

$db = new PDO('mysql:host=localhost;dbname=database', 'root', '');
$query = "UPDATE table SET data_1=" . $data_1 . " WHERE id='" . $_SESSION['ID'] ."'";
$stmt = $db->prepare($query);
if ( !$stmt ) {
yourErrorHandler('could not prepare statement', $db->error);
}
else if ( !$stmt->execute(array($adres_1)) ) {
yourErrorHandler('could execute statement', $stmt->error);
}
else if ( 1>$stmt->rowCount() ) {
// no record has been updates
}
else {
// at least one record has been updated
}

b) $stmt->execute(array($adres_1)); 什么是 $adres_1?它不在该代码的其他任何地方。
c) 你的代码很容易出现sql injections 。你可以解决这个问题,例如通过使用 prepared statements + parameters

整个代码看起来像是其他脚本的一小部分已被复制和粘贴,但不了解这些片段的作用。

关于php - 表单未发布到 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35743554/

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