【发布时间】:2019-12-05 20:25:30
【问题描述】:
我收到一个致命错误,“列不能为空。”
index.php
<head>
<script>
let xhr = window.XMLHttpRequest
? new XMLHttpRequest()
: new ActiveXObject('Microsoft.XMLHTTP')
xhr.open('POST', 'ajax.php', true)
xhr.setRequestHeader('content-type', 'applications/x-www-form-urlencoded')
xhr.send('sld=testing&tld=com®istrar=namecheap')
</script>
</head>
ajax.php
var_dump($_POST); // without these var_dumps
var_dump($_REQUEST); // i receive a 500 error (internal server error)
if ($_SERVER["REQUEST_METHOD"] === "POST"){
include "includes/connect_to_database.php";
$pdo = $connection->prepare("INSERT INTO domains (sld, tld, registrar) VALUES (:sld, :tld, :registrar)");
$pdo->execute(array(
":sld" => $_REQUEST["sld"],
":tld" => $_REQUEST["tld"],
":registrar" => $_REQUEST["registrar"]
));
$connection = null;
}
fwiw:connect_to_database.php
try {
$connection = new PDO("mysql:host=$dbhost; dbname=$dbname; charset=utf8", $dbuser, $dbpass);
$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully!";
} catch(PDOException $e) {
echo "Connection failed: " . $e->getMessage() . ".";
}
MySQL 表架构
- 它说罪魁祸首是
sld,所以好像没有任何数据被向前传递。 -
responseText也是空白。 - 我也使用
$_POST得到完全相同的错误。 -
var_dump($_REQUEST)和var_dump($_POST)在响应中都返回空数组。 - 我尝试在帖子字符串上使用
encodeURIComponent,但没有成功。 - 值得注意的是,如果我删除
var_dump语句,我会收到 500 错误(内部服务器错误)。
可能是我没有发送所有必要的标头吗?
我到底做错了什么让数据不能被转发?
【问题讨论】:
-
你不应该使用
$_POST而不是$_REQUEST吗? -
@Jaquarh 我试过
$_POST,完全相同的错误。我实际上刚刚完成了更新我的问题 -
var_dump($_POST)给你什么?你也不能使用JQuery吗?$.post() -
@Jaquarh 我也不知道。我在这里联系了一位朋友,他的程序员比我好得多,所以也许地狱能够发现问题
-
@Jaquarh 已解决。检查答案。你会想把你的头撞到墙上大声笑
标签: javascript php mysql ajax post