首页 > 解决方案 > 无法将数据发布到我在 godaddy 上的数据库

问题描述

我对 php 很陌生,这是我的第一个项目。在这里,我有一个简单的 html 表单,可以将数据提交到 mySql 数据库。

我在 mySql 中创建了一个包含 3 列的表,第一列JobId是 auro 增量字段和主键。第二个和第三个TitleJobDescriptionvarchars。在我的 html 中,我填写数据并提交,数据应该发布在我创建的表中。

这是我的 HTML。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Post Job</title>
</head>

<body>
    <form action="jobSubmit.php" method="Post">
        <input type="text" name="jTitle" placeholder="Enter Title" required/>
        <textarea name="jDesc" placeholder="Enter Job Description" required></textarea>
        <button type="submit" value="Submit"></button>
    </form>
</body>

</html>

这是我的php代码。

<?php
$jTitle = $_POST['jTitle'];
$jDesc = $_POST['jDesc'];

if (!empty($jTitle) && !empty($jDesc))
{
    $host = "localhost";
    $dbUserName = "muUserId";
    $dbPassword = "myPwd";
    $dbname = "Jobs";
    try
    {
        $conn = new mysqli($host, $dbUserName, $dbPassword, $dbname);

    }
    catch(Exception $ex)
    {
        echo 'Error : ' . $ex->getMessage();
    }
    if (mysqli_connect_error())
    {
        die('Connect Error(' . mysqli_connect_errno() . ')' . mysqli_connect_error());
    }
    else
    {
        echo $jDesc . ' and ' . $jTitle;
        //$SELECT = "SELECT JobId from OpenPositions Where JobId=? LIMIT 1";
        $INSERT = "INSERT into OpenPositions (Title, JobDescription) values (?,?)";

        $stmt = $conn->prepare($INSERT);
        $stmt . bind_param("s,s", $jTitle, $jDesc);
        try
        {
            $stmt . execute();
            echo "New Record Inserted";
        }
        catch(Exception $ex)
        {
            echo 'Error : ' . $ex->getMessage();
        }
        $stmt->close();
        $conn->close();
    }
}
else
{
    echo "Enter both Title and Desription";
    die();
}
?>

当我运行它时,输入Test titleTse Desc点击提交,我得到下面的屏幕。

还有一点我错过了更新。我在 godaddy 上托管这个。

请让我知道我哪里出错了,我该如何解决这个问题。

谢谢

在此处输入图像描述

更新 1

这是我的架构。

在此处输入图像描述

标签: phpmysql

解决方案


#正确的代码是:

<?php
$jTitle = $_POST['jTitle'];
$jDesc = $_POST['jDesc'];

if (!empty($jTitle) && !empty($jDesc))
{
    $host = "localhost";
    $dbUserName = "root";
    $dbPassword = "";
    $dbname = "Jobs";
    try
    {
        $conn = new mysqli($host, $dbUserName, $dbPassword, $dbname);

    }
    catch(Exception $ex)
    {
        echo 'Error : ' . $ex->getMessage();
    }
    if (mysqli_connect_error())
    {
        die('Connect Error(' . mysqli_connect_errno() . ')' . mysqli_connect_error());
    }
    else
    {
        echo $jDesc . ' and ' . $jTitle;
        //$SELECT = "SELECT JobId from OpenPositions Where JobId=? LIMIT 1";
        $INSERT = "INSERT into OpenPositions (Title, JobDescription) values (?,?)";

        $stmt = $conn->prepare($INSERT);
        $stmt->bind_param("ss",$jTitle,$jDesc);
        try
        {
            $stmt->execute();
            echo "New Record Inserted";
        }
        catch(Exception $ex)
        {
            echo 'Error : ' . $ex->getMessage();
        }
        $stmt->close();
        $conn->close();
    }
}
else
{
    echo "Enter both Title and Desription";
    die();
}
?>

#你的代码有什么问题:

  1. bind_param() 是 $stmt 对象的一种方法,因此您需要像 $stmt->bind_param() 而不是 $stmt.bind_param() | 那样使用它。$stmt.execute() 也将是 $stmt->execute()

  2. bind_param() 关于输入类型的第一个参数应该像 'ss' 而不是 's,s'

游览以清楚了解 bind_param() https://www.php.net/manual/en/mysqli-stmt.bind-param.php

在此处输入图像描述

现场演示

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述


推荐阅读