【问题标题】:Trouble getting FORM submitted to Mysql无法将 FORM 提交到 Mysql
【发布时间】:2018-03-14 15:30:29
【问题描述】:

我有一页有一个输入文本框,需要插入数据或更新现有行。

稍后我会回应它,这是可控的。

<form method="post" name="tapahtuma">
Submit: 
<input type="text" name="auts[]"> 
<input type="button" value="Ilmoita">
</form >

<?php

if(isset( $_POST["tapahtuma"]) ) {
$link = mysql_connect("localhost","root","","db");
mysqli_query($link, "INSERT INTO table (column) VALUES ('".$auts."')");
$auts = mysql_real_escape_string($_POST['auts']);
mysqli_close($link);
}

?>

【问题讨论】:

  • submit 按钮在哪里?
  • 将类型从button更改为submit
  • 您给定的代码中有很多缺陷。你需要先了解基本的php编码。
  • 你在混合mysqlmysqli
  • 你的语法非常有问题..你也应该有一个未定义的变量 $auts

标签: php jquery mysql forms


【解决方案1】:

根据提供的代码。

变化

  1. &lt;input type="button" value="Ilmoita"&gt; 更改为&lt;input type="submit" name="Ilmoita" value="Ilmoita"&gt;
  2. if(isset( $_POST["tapahtuma"]) ) { 更改为if(isset( $_POST["Ilmoita"]) ) {
  3. $link = mysql_connect("localhost","root","","db"); 更改为$link = mysqli_connect("localhost","root","","db");
  4. $auts = mysql_real_escape_string($_POST['auts']); 放在mysqli_query 之前

更新代码

<form method="post" name="tapahtuma">
  <input type="text" name="auts">
  Submit: <input type="submit" name="Ilmoita" value="Ilmoita">
</form >
<?php

if(isset( $_POST["Ilmoita"]) ) {
  $link = mysqli_connect("localhost","root","","db");
  $auts = mysql_real_escape_string($_POST['auts']);
  mysqli_query($link, "INSERT INTO table (column) VALUES ('".$auts."')");
  mysqli_close($link);
}?>

我建议你使用prepared statements 来避免SQL Injections

<form method="post" name="tapahtuma">
  <input type="text" name="auts">
  Submit: <input type="submit" name="Ilmoita" value="Ilmoita">
</form>

<?php
if(isset($_POST["Ilmoita"])) {
  $link = mysqli_connect("localhost","root","","db") or die("connection failed: " . mysqli_connect_error());
  $result = mysqli_prepare($link, "INSERT INTO `table` (`column`) VALUES (?)");
  mysqli_stmt_bind_param($result, "s", $_POST['auts']);
  mysqli_stmt_execute($result);
  mysqli_close($link);
}?>

快速链接

【讨论】:

  • 它在 localhost 所以不用担心 sqli
  • 这也没有更新我的 mysql 数据库。连接应该没问题,但不能让它发布任何东西,因为数据库设置为 varchar。应该是别的吗?
  • 那么,就是你的数据库连接问题了。检查数据库连接方法@Miggs中是否正确传递了DB Credentials
  • 我已经更新了我的答案。我忘记在提交按钮中添加name="Ilmoita"。看看然后再试一次@Miggs
  • 你好,所以如果我用这个函数更新一个日期表,它就像一个魅力。文本没有,所以我真的不知道是什么导致了这种情况。
【解决方案2】:
<form method="post" name="tapahtuma">
Vapaa teksti: <input type="text" name="auts">
<input type="submit" value="ilmoita" name="ilmoita">
</form >

<?php

if(isset( $_POST["ilmoita"]) ) {
$link = mysqli_connect("localhost","root","","db");
$auts = mysqli_real_escape_string($link, $_POST['auts']);
mysqli_query($link, "INSERT INTO table (column) VALUES ('$auts')");
mysqli_close($link);
}?>

我所做的是,我使用了 mysqli_real_escape_string 而不是 mysql_real_escape_string 并且还在那里添加了 $link。

我会在某个时候用准备好的语句进行测试,但至少这是可行的,而且它确实与 sqli 漏洞利用无关。

【讨论】:

    猜你喜欢
    • 2018-11-16
    • 2019-01-09
    • 1970-01-01
    • 1970-01-01
    • 2017-11-19
    • 2012-05-10
    • 1970-01-01
    • 2017-03-28
    • 1970-01-01
    相关资源
    最近更新 更多