簡體   English   中英

我的ask.php語法有什么問題?

[英]What is wrong with my ask.php Syntax?

因此,我按照我之前的指示修改了腳本,但是運行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>

至少您需要在此行的數組索引周圍加上引號:

if (!isset($_POST[name]) || !isset($_POST[question]))

做了

if (!isset($_POST['name']) || !isset($_POST['question']))

另外,檢查您的錯誤級別(暫時無法為您提供鏈接),PHP應該為此警告您。

嘗試改變

if (!isset($_POST[name]) || !isset($_POST[question]))

if (!isset($_POST['name']) || !isset($_POST['question']))

將其放在腳本的頂部:

ini_set('display_errors',1);
error_reporting(E_ALL|E_STRICT);

這應該讓您知道發生了什么事。

根據您的錯誤消息,很明顯您的查詢失敗。 您用@抑制了錯誤,因此or die(...)永遠不會起作用。

您在查詢中的$table_name是未定義的,因此查詢看起來像

INSERT INTO (name, question) ...

這是不正確的SQL。

您需要的兩個主要修復程序:

  1. 刪除mysql_query()上的@ supression。 禁止錯誤幾乎是不可接受的,尤其是在處理數據庫時。
  2. 在腳本中定義$table_name ,或將查詢字符串中的變量更改為適當的表名。

首先,不要檢查isset。 由於總是生成$ _POST,因此您應該使用!empty()。

在mysql_ *命令之前刪除@,這會使腳本運行緩慢並抑制有用的錯誤。

並且由於沒有設置表變量而遇到了問題,需要定義$ table_name。

如果要將問題插入名為“ questions”的表中,只需將SQL更改為:

//Insert data into database
$sql = "INSERT INTO `questions` (name, question)
             VALUES ('$name', '$question')";

您忘記添加分號 * ; *行號 三十

它應該是

   $db = mysql_select_db($db_name, $connection) or die(mysql_error());

代替

  $db = mysql_select_db($db_name, $connection) or die(mysql_error())

您需要結束這一行:

$db = mysql_select_db($db_name, $connection) or die(mysql_error())

將其更改為:

$db = mysql_select_db($db_name, $connection) or die(mysql_error());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM