【问题标题】:php does not send correct stuff to mysqlphp没有向mysql发送正确的东西
【发布时间】:2014-11-23 19:28:39
【问题描述】:

大家好,我正在学习 PHP,下面的代码将信息发送到我的 MySQL 数据库,但它与我刚刚给他插入的数据不匹配,例如它为下面的代码插入 1|blank|blank。我解决不了:

插入.php 文件:

<?php
$con=mysqli_connect("localhost","root","");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

// escape variables for security


$firstname = mysqli_real_escape_string($con, $_POST['firstname']);
$age = mysqli_real_escape_string($con, $_POST['age']);

$sql="INSERT INTO Person (PID,Name, Age)
VALUES ('1','$firstname', '$age')";


if (!mysqli_query($con,$sql)) {
die('Error: ' . mysqli_error($con));
}
echo "1 record added to database";

mysqli_close($con);
?>

我一直这么说:

Notice: Undefined index: firstname in E:\XAMPP\htdocs\Bioinformatics\insert.php on line 11

Notice: Undefined index: age in E:\XAMPP\htdocs\Bioinformatics\insert.php on line 12

html 表单代码:

<!DOCTYPE html>
<html>
<body>

<form name="input" action="insert.PHP" method="get">
First name: <input type="text" name="FirstName" value="Ronaldo"><br>
Age: <input type="text" name="Age" value="28"><br>
<input type="submit" value="Submit">
</form> 



</body>
</html>

感谢大家的帮助!

【问题讨论】:

  • 导致 $_POST['firstname'] 和 $_POST['age'] 没有值
  • 因为$_POST['firstname']$_POST['age'] 不包含任何值。
  • 您的帖子值未设置,您是否在表单中使用了 GET 方法?
  • 你的form在哪里?也请分享您的form 页面的代码。
  • @TheRealHamza 他正在使用mysqli_,它仍然受支持。

标签: php mysql sql xampp


【解决方案1】:

您似乎忘记发布所需的数据。 $_POST['firstname'] 和 $_POST['age'] 未在您的 html 中定义。 您缺少以下输入或拼写错误:

<input type="text" name="firstname" />
<input type="text" name="age" />

【讨论】:

    【解决方案2】:

    因为您没有 $_POST['firstname']$_POST['age'] 的值,请尝试检查它是否有值。

    if(!empty($_POST['Firstname'])) {
      $firstname = mysqli_real_escape_string($con, $_POST['Firstname']);
    }
    else {
      echo 'firstname empty';
    }
    if(!empty($_POST['Age'])) {
      $age= mysqli_real_escape_string($con, $_POST['Age']);
    }
    else {
      echo 'age empty';
    }
    

    年龄也一样 要检查帖子值,请尝试此页面上的print_r($_POST);

    【讨论】:

    • 你是对的,它说这两个变量都是空的。我不明白为什么以及如何解决它。对于 print_r 它显示: Array ( [firstName] => Ronaldo [age] => 28
    • 因为您需要使用名字和年龄而不是名字和年龄使用相同的确切姓名
    • 变量还是空的:s
    • 尝试将表单方法更改为 POST
    【解决方案3】:

    改变

    $firstname = mysqli_real_escape_string($con, $_POST['firstname']);
    $age = mysqli_real_escape_string($con, $_POST['age']);
    

    $firstname = $_POST['firstname'] ? mysqli_real_escape_string($con, $_POST['firstname']) : "";
    $age = $_POST['age'] ? mysqli_real_escape_string($con, $_POST['age']) : "";
    

    【讨论】:

      【解决方案4】:

      echo "&lt;pre&gt;";print_r($_REQUEST);exit; // 检查所有变量中的值。

      将您的 php 代码放在 html 代码下方,以摆脱未定义的索引通知或使用 isset() 函数,例如。 if(isset($_POST['age'])) 或用空值初始化这些变量。像 $age = "";

      另见@karlingen 的回答

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-01-04
        • 2015-02-01
        • 2021-10-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多