PHP MySQL未连接和发布

PHP MySQL未连接和发布,php,html,Php,Html,我可能缺少一些基本的东西,所以在这一点上,我只需要第二双眼睛。我正在我的网站上构建一个简单的输入表单,以便访问者可以提交一些信息。现在,我只是叫他们工作(我只是想让它工作)。单击submit时,在PHPMYadmin端看不到任何信息,因此SQL数据库显然没有更新。我第一次没说这句话,真是太糟糕了 此外,出于安全原因,我的密码是隐藏的,但它是正确的 这是我的PHP和HTML <?php $con = mysql_connect("localhost","projedl8_Jason","//

我可能缺少一些基本的东西,所以在这一点上,我只需要第二双眼睛。我正在我的网站上构建一个简单的输入表单,以便访问者可以提交一些信息。现在,我只是叫他们工作(我只是想让它工作)。单击submit时,在PHPMYadmin端看不到任何信息,因此SQL数据库显然没有更新。我第一次没说这句话,真是太糟糕了

此外,出于安全原因,我的密码是隐藏的,但它是正确的

这是我的PHP和HTML

<?php
$con = mysql_connect("localhost","projedl8_Jason","/////");
if (!$con)
{
    die('Could not connect: ' . mysql_error());
}

mysql_select_db("projedl8_quicktern", $con);

$sql="INSERT INTO jobListForm (NAME, Email, JobTitle, JobDescription)
            VALUES ('JASON', '$_POST[email]','$_POST[job_title]','$_POST[job_description]')";

if (!mysql_query($sql,$con))
  {
      die('Error: ' . mysql_error());
  }
echo "1 record added";

                        mysql_close($con);
?>

我假设您的问题只是“mysql无法连接”部分(我还假设“///”是该字段的正确值)

尝试将“localhost”替换为“127.0.0.1”,或替换为内部网络接口的IP,以防未通过Unix套接字进行连接

但是,您的代码有一个非常糟糕的SQL注入漏洞,在这种形式下,使用MySQL(它是一种插入形式,MySQL不允许执行多个语句,因此

email=','',''); DROP TABLE jobListForm; --
将导致

INSERT INTO jobListForm (NAME, Email, JobTitle, JobDescription)
        VALUES ('JASON', '','',''); DROP TABLE jobListForm; --','','');
被传递到MySQL,并且只有第一个查询INSERT将执行

但是,在其他地方,这可能会允许SELECT…LOGIN查询返回TRUE,并且管理员的记录即使提交的密码错误,也会允许任何人管理您的系统


在PDO中使用准备好的语句,或者彻底验证您的帖子中发布的内容。

我认为可能是
$\u POST[…]中缺少的单引号。

但是,您的解决方案对开放,因此最好使用事先准备好的语句, 处理引号/反斜杠,在参数中转义

    $db = new mysqli($dbserver, $dbusername, $dbpassword, $dbdatabase);
    $stmt2 = $db->stmt_init();
    if (!$stmt2->prepare("INSERT INTO jobListForm (NAME, Email, JobTitle, JobDescription)
        VALUES (?, ?, ?, ?)")) {
        die('Error');
    } else {
        $stmt2->bind_param('ssss', 'JASON', $_POST['email'], $_POST['job_title'], $_POST['job_description']);
        if (!$stmt2->execute()) {
            die;
        } else {
            $id = mysqli_insert_id($db);
        }
    }
    $stmt2->close();

(四个sss表示每个参数都是一个字符串。)

为什么在
mysql\u connect()的第三个参数中使用
“///”
?问题是什么?你得到了什么输出?我看到这段代码上到处都是指纹。请停止使用
mysql.*
函数。改用或。作为Jason的同事,你让我很尴尬:)@Lion,Jason只是不想与你共享密码。嗯,SQL数据库中仍然没有显示。现在我得到了一个“找不到页面”。奇怪的是,我没有更改php文件的名称
die
应该是
die('Error')和
$localhost`当然是
'localhost'
等等。您是否尝试在没有php的情况下在mysql中执行该语句?它给了我一个语法错误…:/
    $db = new mysqli($dbserver, $dbusername, $dbpassword, $dbdatabase);
    $stmt2 = $db->stmt_init();
    if (!$stmt2->prepare("INSERT INTO jobListForm (NAME, Email, JobTitle, JobDescription)
        VALUES (?, ?, ?, ?)")) {
        die('Error');
    } else {
        $stmt2->bind_param('ssss', 'JASON', $_POST['email'], $_POST['job_title'], $_POST['job_description']);
        if (!$stmt2->execute()) {
            die;
        } else {
            $id = mysqli_insert_id($db);
        }
    }
    $stmt2->close();