html php 插入数据库,HTML / PHP表单不会将数据插入MySQL数据库

等效于

这不是您想要的也不是必需的。

更改为

因为您正在使用POST变量。

这就是'VALUES ("test","test")';起作用的原因,而不是相反的原因,因为这两个变量$subject-$description都基于POST变量:

$subject = $_POST['subj'];

$description = $_POST['desc'];

你可以做

$sql ="INSERT INTO organiser (subject,description) VALUES ('$subject', '$description')";

如评论中所述。

要么

$sql ="INSERT INTO organiser (subject,description) VALUES ('".$subject."', '".$description."')";

将错误报告添加到文件顶部

error_reporting(E_ALL);

ini_set('display_errors', 1);

这可能表示您的代码中发现了错误。

http://php.net/manual/en/function.error-reporting.php

但是,您的方法可以进行SQL注入。将mysqli_*与预处理语句一起使用,或将PDO与预处理语句一起使用。

使用mysqli准备语句方法;更安全。

$DB_HOST ="xxx"; // replace with your own

$DB_NAME ="xxx";

$DB_USER ="xxx";

$DB_PASS ="xxx";

$conn = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME);

if($conn->connect_errno > 0) {

die('Connection failed [' . $conn->connect_error . ']');

}

// optional to check for empty fields

// if(isset($_POST['submit']) && !empty($_POST['subj'])  && !empty($_POST['desc'])) {

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

$subject = stripslashes($_POST['subj']);

$description = stripslashes($_POST['desc']);

$stmt = $conn->prepare("INSERT INTO organiser (`subject`, `description`) VALUES (?, ?)");

$stmt->bind_param('ss', $subject, $description);

if (!$stmt->execute()) {

echo"Execute failed: (" . $stmt->errno .")" . $stmt->error;

}

else{

echo"Success!";

}

$stmt->close(); // Statement

$conn->close(); // MySQLi

}

?>

形式:(新)

Subject:

Description:

您的问题是因为您在$sql声明中使用了单引号,

$sql = 'INSERT INTO organiser '.'(subject,description) '.'VALUES ('$subject', '$description')';

当您使用单引号时,您是在告诉PHP您希望将引号中的所有内容按字面意义使用。

$age = 20;

$myAge = 'I am $age years';

echo $myAge;

因为您使用了单引号,所以这将回显I am $age years。

但是,如果您使用双引号代替,

$age = 20;

$myAge ="I am $age years";

echo $myAge;

输出将是

I am 20 years

因此,您的$ sql语句应为(我将其写在一行上),

$sql ="INSERT INTO organiser (subject,description) VALUES ('$subject', '$description')";

^                                                                               ^

如果您回显$ sql,它将变成类似的东西,

INSERT INTO organiser (subject,description) VALUES ('Your subject', 'Your description')

您在SQL语句中使用单引号是正确的,您可以在此处阅读有关此主题的更多信息:何时使用单引号,双引号和反引号

您忘记了变量周围的点,并且可以根据变量的内容在其周围添加一些双引号:)

'VALUES ("'.$subject.'","'.$description.'")';

或只是$sql ="INSERT INTO organiser (subject,description) VALUES ($subject, $description)";

非常正确,但是您必须向他解释一下用单引号/双引号引起来的区别:)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值