表单未发布到MySQL数据库

时间:2016-03-02 09:46:53

标签: php mysql

我正在尝试将数据从文本字段发送到我的数据库。当我运行代码时,我没有错误。但代码不会将数据发布到数据库。我看不出什么是错的,有人看看有什么不对吗?

的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>

send1.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>

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

您使用的是自动提交吗?也许您的数据库更改正在回滚。尝试添加额外的COMMIT SQL语句。

答案 2 :(得分:0)

您必须提交您的代码。然后只有POST方法将值发送到php文件。

<强>的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" />

<input type="submit" name="send">Send</button>
</form>
</html>

<强> send1.php

<?php 
session_start(); 

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

if ($_POST['send']) {
    $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>