我的ask.php语法有什么问题?

时间:2011-06-26 02:07:06

标签: php mysql

所以我按照之前的指示修改了脚本,但是当我运行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>

7 个答案:

答案 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。

您需要的两个主要修复:

  1. 删除mysql_query()上的@抑制。压制错误几乎是绝对不可接受的,特别是在处理数据库时。
  2. 在脚本中定义$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());