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