【问题标题】:Getting no value when trying to insert $_POST to MySQL [closed]尝试将 $_POST 插入 MySQL 时没有任何价值 [关闭]
【发布时间】:2013-01-21 12:30:17
【问题描述】:

我正在制作一个测验系统,当我尝试从 HTML 表单的 $_POST 插入问题文本时,它只是插入一个空值,并且 question_id 保持为零:

        Question text: <br />
                    <textarea name="qtext" rows="2" style="width:200px; height:100px;" name="qst"></textarea> <br />

PHP 部分

$post_qtext = $_POST['qst'];
$post_qtext = mysql_real_escape_string($post_qtext);
    $q_insertquestions = mysql_query("INSERT INTO `questions` (`question`,`type`) VALUES ('$post_qtext','1')");
$q_lastquestioninserted = mysql_insert_id($q_insertquestions);

表中的question_id是int(11) mysql中的问题是varchar(60)

【问题讨论】:

  • 请停止使用mysql_* 函数,它们不再受支持并且已开始弃用过程。查看 mysqliPDO 以获得更安全和受支持的功能集。
  • 您的 textarea 名为 qtext,但您正在阅读不存在的 $_POST['qst']
  • 您已经为文本区域指定了两次“名称”属性,首先删除其中一个。
  • 打开 display_errors,您将看到未定义的索引通知,这将识别问题。 error_reporting(E_ALL); ini_set('display_errors', 1);
  • @MichaelBerkowski 问题是他给了它一个“名字”,两次。

标签: php mysql http-post mysql-real-escape-string mysql-insert-id


【解决方案1】:

textarea 有 name="qtext",但 PHP 有 $_POST['qst'];

您需要访问与您的字段名称相同的数组索引。

…我现在看到它name="qst"。不允许在单个元素上两次使用相同的属性。浏览器可能会也可能不会从此错误中恢复。你应该使用a validator

【讨论】:

  • 我修复了名称问题,但仍然无法正常工作。
【解决方案2】:

你已经在你的 HTML 页面中写了两次 name 更改它并将你的文本区域名称更改为 qst

<textarea name="qst" rows="2" style="width:200px; height:100px;"></textarea> <br />

【讨论】:

  • 现在可以了,但是mysql_insert_id()也有问题
  • 尽量避免mysql_*查询,写简单的mysql_query...因为有时候不支持..
【解决方案3】:

因为你为textarea添加了两个名字

textarea 中删除name="qst"

<textarea name="qtext" rows="2" style="width:200px; height:100px;"></textarea> 

然后这样做:

$post_qtext = $_POST['qtext'];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 2012-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多