MAMP / XAMPP(本地)和$ _POST问题

时间:2015-12-27 06:34:00

标签: php mysql

注意:此问题似乎与在运行El Capitan的Macbook Pro上运行 MAMP / XAMPP 有关。相同的DB /源文件在Windows机器上完美运行。

注意2:这不是生产应用程序。请不要批评该代码,是否容易受伤。

注3:原始POST数据:

file_get_contents("php://input"); = author=1&title=1&category=1&year=1&isbn=1



print_r($_POST); = Array()

来源:学习PHP,MySQL和Javascript第4版。这是示例10-6。当我提交表单以添加额外的行时,实际上没有任何内容发布到数据库。

我在另一本书的另一个例子中遇到了与查询运行器完全相同的问题。 $ _POST数组为空,但原始发布数据显示带有正确信息的字符串。 $ _GET确实有效。这似乎仅限于此计算机上的 MAMP / XAMPP 。我无法想象我的生活。大多数有类似问题的人建议验证php.ini文件中的max post size变量设置得太低。默认值为128M,对于此脚本应该完全过度。

有没有人有任何建议,似乎与配置相关。

<?php // sqltest.php
/**
 * Created by PhpStorm.
 * User: kg3
 * Date: 12/27/15
 * Time: 12:34 AM
 */

require_once 'connect.php';

if (isset($_POST['delete']) && isset($_POST['isbn']))
{
    $isbn   = get_post($conn, 'isbn');
    $query  = "DELETE FROM classics WHERE isbn='$isbn'";
    $result = $conn->query($query);
    if (!$result) echo "DELETE failed: $query<br>" .
        $conn->error . "<br><br>";
}

if (isset($_POST['author'])   &&
    isset($_POST['title'])    &&
    isset($_POST['category']) &&
    isset($_POST['year'])     &&
    isset($_POST['isbn']))
{
    $author   = get_post($conn, 'author');
    $title    = get_post($conn, 'title');
    $category = get_post($conn, 'category');
    $year     = get_post($conn, 'year');
    $isbn     = get_post($conn, 'isbn');
    $query    = "INSERT INTO classics VALUES" .
        "('$author', '$title', '$category', '$year', '$isbn')";
    $result   = $conn->query($query);

    if (!$result) echo "INSERT failed: $query<br>" .
        $conn->error . "<br><br>";
}

echo <<<_END
  <form action="sqltest.php" method="post"><pre>
    Author <input type="text" name="author">
     Title <input type="text" name="title">
  Category <input type="text" name="category">
      Year <input type="text" name="year">
      ISBN <input type="text" name="isbn">
           <input type="submit" value="ADD RECORD">
  </pre></form>
_END;

$query  = "SELECT * FROM classics";
$result = $conn->query($query);
if (!$result) die ("Database access failed: " . $conn->error);

$rows = $result->num_rows;

for ($j = 0 ; $j < $rows ; ++$j)
{
    $result->data_seek($j);
    $row = $result->fetch_array(MYSQLI_NUM);

    echo <<<_END
  <pre>
    Author $row[0]
     Title $row[1]
  Category $row[2]
      Year $row[3]
      ISBN $row[4]
  </pre>
  <form action="sqltest.php" method="post">
  <input type="hidden" name="delete" value="yes">
  <input type="hidden" name="isbn" value="$row[4]">
  <input type="submit" value="DELETE RECORD"></form>
_END;
}

$result->close();
$conn->close();

function get_post($conn, $var)
{
    return $conn->real_escape_string($_POST[$var]);
}

1 个答案:

答案 0 :(得分:0)

想出来。

它最终不是Apache,PHP版本,我的代码或我之前提到的任何其他内容。我使用PHPStorm IDE,并在之前使用MAMP进行了设置。该安装的端口与我当前的安装不同,我没有意识到。一些网络流量通过该端口,但$ _POST不是。在更正URL中的端口并更新PHPStorm后,一切正常。 2天才弄清楚...... DOH