不太清楚为什么这份准备好的声明不起作用

时间:2012-01-07 16:37:53

标签: php mysql pdo prepared-statement

出于某种原因,这只是没有插入我的数据库......

HTML

<form name="testimonials_form" method="post" action="insert/">
  Name
  <input type="text" name="from" maxlegnth="100" />
  Location
  <input type="text" name="where" maxlegnth="100" />
  Text Snippet
  <input type="text" name="text" maxlegnth="255">
  <input type="submit" name="submit" value="Continue" />
</form>

PHP

<?php

$from = $_POST['from'];
$where = $_POST['where'];
$text = $_POST['text'];

if (!$from || !$where || !$text) {
  $error = "You have missed some fields.";
  $solution = "Please go back and <a href=\"javascript:history.go(-1)\" target=\"_self\">try again</a>.";
} else {
  $data_array = array(':from' => $from, ':where' => $where, ':text' => $text);

  $insert_testimonial = $connect->prepare("
  INSERT INTO `testimonials` (
      text, from, where
  ) VALUES (
      :text, :from, :where
  )
  ");

  $insert_testimonial->execute($data_array);

  $amount = $insert_testimonial->rowCount();

  if ($amount < 1) {
    $error = "Something went wrong.";
    $solution = "Please go back and <a href=\"javascript:history.go(-1)\" target=\"_self\">try again</a>.";
  } else {
    header ("Location: ../");
  }
}

?>

我不断回头的是我的自定义错误“出了问题。”因此,没有500错误(内部服务器错误),如果我回显$ from,$ where和$ text它显示我在表单中键入的内容,我已经重写了大约5次,以防我写错了或者其他什么但是仍然没有运气。我知道没有符号丢失或错误的地方,因为它会返回500错误。

有没有人知道它有什么用呢?我已经无数次写过这样的代码了,但这似乎没有用,所以我一定要错过一些东西。

1 个答案:

答案 0 :(得分:1)

from, where
您的查询中的

需要

`from`, `where`

因为fromwhere是MySQL中的保留字:

http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

顺便提一下,这些都是反击。 IMO,你最好不要将这些单词用作列名,但如果你这样做,你通常需要使用反引号。