所以我按照之前的指示修改了脚本,但是当我运行HTML表单时,我仍然得到一个空白页面。这有什么不对?
更新 2:我现在收到以下错误。
解析错误:语法错误,第32行/home/content/o/m/o/omorgan/html/dimephysics/adviseme/ask.php中的意外T_VARIABLE
<?php
ini_set('display_errors',1);
error_reporting(E_ALL|E_STRICT);
//include('config.php');
//include('open_connection.php');
if (!isset($_POST['name']) || !isset($_POST['question']))
{
header ("Location: ask.html");
exit;
}
// Database parameters
$dbhost = '...';
$dbuser = 'questionme';
$dbpass = 'Question_2011';
$dbname = 'questionme';
$db_name = "questionme";
$table_name = "questions";
//Open connection
$connection = mysql_connect("", "questionme", "Question_2011")
or die(mysql_error());
$db = mysql_select_db($db_name, $connection) or die(mysql_error())
$name = mysql_escape_string($_POST[name]);
$question = mysql_escape_string($_POST[question]);
//Insert data into database
$sql = "INSERT INTO questions
(name, question) VALUES
('$name', '$question')";
?>
<html>
<head>
<title>Ask</title>
<head>
<body>
<h1>Question Submitted</h1>
<p><strong>Name:</strong>
<?php echo $_POST['name']; ?></p>
<p><strong>Question:</strong>
<?php echo $_POST['question']; ?></p>
</body>
</html>
答案 0 :(得分:1)
至少你需要在这一行的数组索引周围引用:
if (!isset($_POST[name]) || !isset($_POST[question]))
成功
if (!isset($_POST['name']) || !isset($_POST['question']))
另外,检查你的错误级别(暂时不能给你一个链接,有点匆忙),PHP应该警告你这个。
答案 1 :(得分:1)
尝试更改
if (!isset($_POST[name]) || !isset($_POST[question]))
到
if (!isset($_POST['name']) || !isset($_POST['question']))
答案 2 :(得分:1)
将其放在脚本的顶部:
ini_set('display_errors',1);
error_reporting(E_ALL|E_STRICT);
这应该让你知道发生了什么。
答案 3 :(得分:0)
鉴于您的错误消息,很明显您的查询失败了。您已经在@
上标记了错误,因此or die(...)
从未启动过。
查询中的$table_name
未定义,因此查询类似于
INSERT INTO (name, question) ...
这是不正确的SQL。
您需要的两个主要修复:
@
抑制。压制错误几乎是绝对不可接受的,特别是在处理数据库时。$table_name
,或将查询字符串中的变量更改为正确的表名。答案 4 :(得分:0)
首先,不要检查isset。由于$ _POST总是生成,所以你应该使用!empty()。
在mysql_ *命令之前删除@,这会使您的脚本变慢并抑制有用的错误。
由于您没有设置表变量,因此您遇到了问题,需要定义$ table_name。
如果要将问题插入名为“questions”的表中,只需将SQL更改为:
//Insert data into database
$sql = "INSERT INTO `questions` (name, question)
VALUES ('$name', '$question')";
答案 5 :(得分:0)
您忘记在行号中添加分号 * ; *。 30
应该是
$db = mysql_select_db($db_name, $connection) or die(mysql_error());
而不是
$db = mysql_select_db($db_name, $connection) or die(mysql_error())
答案 6 :(得分:0)
你需要结束这一行:
$db = mysql_select_db($db_name, $connection) or die(mysql_error())
将其更改为:
$db = mysql_select_db($db_name, $connection) or die(mysql_error());