【问题标题】:Cant get data from a form to my mysql database无法从表单获取数据到我的 mysql 数据库
【发布时间】:2015-10-05 11:11:05
【问题描述】:

我无法让我的代码在 php 中运行 我想将数据从 html 表单移动到我的 mysql 数据库,但它不起作用??

表单部分

 <form action ="Mydbsinsertpersson4.php" method='POST'>
 <table>
 <tr><td width='100'>För namn:<input type='text' name='fnamn'><td></tr>
 <tr><td width='100'>Efternamn:<input type='text' name='enamn'><td></tr>
 </table>
 <tr><td><input type='submit' name='Submit'  value='Submit'><td></tr>
 </form>

php部分

<?php
    if(isset($_POST["submit"])){
require_once 'Mydbconfig.php';
try {
$conn = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$sql = "INSERT INTO tpersson (Perfnamn, Perenamn)
VALUES ('".$_POST["fnamn"]."','".$_POST["enamn"]."')";
$conn = null;
}
catch(PDOException $e){
echo $e->getMessage();
}
}
?>

与我的 mysql 数据库的连接正常,我可以从数据库中获取数据,但不能输入。

在此致谢。

这是我尝试过的许多解决方案中的一个!

【问题讨论】:

  • 你在哪里执行 sql 变量?我的意思是像 mysql_query(sql);什么的
  • 你没有执行你的查询......并且还按照@anant kumar 在下面的回答中所说的那样进行更改

标签: php html mysql pbo


【解决方案1】:

问题是:-

<tr><td><input type='submit' name='Submit'  value='Submit'><td></tr>

然后你写:-

if(isset($_POST["submit"])){

注意:- 在第一个中更改 name = submit 或在第二个中更改 $_POST["Submit"]。谢谢。

【讨论】:

  • 感谢它修复了其中的一部分,但并非所有这些都发生了
  • setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "INSERT INTO tpersson (Perfnamn, Perenamn) 值 ('".$_POST["fnamn"]."','".$_POST["enamn"]."')"; if ($conn->query($sql)) { echo "成功"; } 其他{ 回声“失败”; } $conn = 空; } catch(PDOException $e){ echo $e->getMessage(); } } ?>
  • 执行您的查询 Peter。你没有执行你的查询。
【解决方案2】:

错误

  1. 提交标签名称不正确name='Submit'
  2. 改进您的 HTML 编码格式(&lt;/table&gt; 标记应在最后一个 &lt;/tr&gt; 标记之后关闭)
  3. 使用mysql_real_escape_string() 避免SQL Injections

所以你的最终代码是

 <form action ="Mydbsinsertpersson4.php" method='post'>
     <table>
     <tr><td width='100'>För namn:<input type='text' name='fnamn'><td></tr>
     <tr><td width='100'>Efternamn:<input type='text' name='enamn'><td></tr>

     <tr><td><input type='submit' name='submit'  value='Submit'><td></tr>
     </table>
 </form>

Mydbsinsertpersson4.php

 <?php
    if(isset($_POST["submit"])){
        require_once 'Mydbconfig.php';
        try {
            $conn = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
        // set the PDO error mode to exception
            $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

            $fname = $mysqli->real_escape_string($_POST["fnamn"]);
            $ename = $mysqli->real_escape_string($_POST["enamn"]);

            $sql = "INSERT INTO tpersson (Perfnamn, Perenamn) VALUES ('$fname','$ename')";
            $conn = null;
        }
        catch(PDOException $e){
            echo $e->getMessage();
        }
    }
?>

【讨论】:

  • ( ! ) 警告:mysql_real_escape_string():第 3 行 C:\wamp\www\mydb\Mydbsinsertpersson4.php 中用户 ''@'localhost' 的访问被拒绝(使用密码:YES)
  • ( ! ) 警告:mysql_real_escape_string():无法在第 3 行的 C:\wamp\www\mydb\Mydbsinsertpersson4.php 中建立到服务器的链接
  • 这是问题$Firstname = mysql_real_escape_string($_POST['fname']);
  • 使用这个$mysqli-&gt;real_escape_string($_POST["fnamn"]);,查看答案
  • 还是同样的问题!!
【解决方案3】:

我喜欢使用两个文件来执行此操作,一个用于处理输入,一个用于实际表单。

form.html:

<form action ="/assets/post_people.php" method='POST'>
<table>
<tr><td width='100'>Firstname:<input type='text' name='fname'><td></tr>
<tr><td width='100'>Lastname:<input type='text' name='lname'><td></tr>
</table>
<tr><td><input type='submit' name='Submit'  value='Submit'><td></tr>
</form>

现在,对于 post_people.php:

<?php
//db 
require_once 'db_connect.php';


//Get and filter input @ to avoid injections
$Firstname = mysql_real_escape_string($_POST['fname']);
$Lastname = mysql_real_escape_string($_POST['lname']);


//Check if the user has submitted the form
if(isset($_POST['Submit'])){


    //Check if the person already exist in our database
    $Check_people = mysql_query("SELECT * FROM People WHERE Firstname =     '$Firstname' AND Lastname = '$Lastname'");

if(mysql_num_rows($Check_people)==1){
    //The person already exists with exact same data!
}

//The person did not exist in our database, so we'll update.
else{


    $update_query = mysql_query("INSERT INTO People (Firstname, Lastname) VALUES ('$Firstname', '$Lastname')");

    if($update_query){
        //success
    }
    else {
        //Error

    }

}

mysql_close();  
}


//The user didnt submit the form and tried to access the file ?
//Redirect to /form.html & kill the script.
else{
header("Location: /form.html");
die;
}

我不知道这是否对你有用,但它确实对我有用:)

(是的,我很清楚你不应该使用 mysql_ 函数,因为它们已被贬值,但它们仍在工作并且易于使用:))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 2018-07-23
    相关资源
    最近更新 更多