【问题标题】:How to insert a php variable into a database table with input?如何通过输入将 php 变量插入到数据库表中?
【发布时间】:2014-02-12 13:10:29
【问题描述】:

我不知道为什么我的代码不起作用。我正在尝试使用表单中的常规输入将动态变量插入到我的数据库中的表中。

这样,这是我的查询代码:

if (isset($_POST['submit'])) {
            // Check if movie allready is added.
            $stmt = $dbh->prepare("SELECT * FROM watchlist WHERE movie_title='{$_POST['$title']}'");
            $stmt->bindParam(':movie_title', $_POST[$movie->title]);
            $stmt->execute();

            $rows = $stmt->fetchALL();
            $n = count($rows);

            if($n > 0){
            echo 'Du är redan peppad på filmen!';
            }


            $sql = $dbh->prepare("INSERT INTO watchlist(movie_title, movie_des, movie_link) 
                                 VALUES ('{$_POST['title']}', '{$_POST['description']}', '{$_POST['link']}'"); 
            $sql->bindParam(':title', $_POST['title']);
            $sql->bindParam(':description', $_POST['description']);
            $sql->bindParam(':link', $_POST['link']);
            $sql->execute();
            header("Location: ../index.php");
            exit;
        }

这是我的表格:

$title = $movie->title;
    $description = $movie->description;
    $link = $movie->link;
    echo '<div class="view">';
    echo '<h3>' . $title . '</h3>';
    echo  $description . '<br/>';
    echo '<a href="'. $link . '" target="_blank">L&auml;s mer...</a><br/><br/>';
    echo '<a href="index.php">Tillbaka</a>';
    echo '<div class="form_dis"></div>';
    echo '<div class="form_content">';
    echo '<form action="queries/insert.php" method="post">',
         '<input type="hidden" name="title" value="$title">',
         '<input type="hidden" name="description" value="$description">',
         '<input type="hidden" name="link" value="$link">',
         '<input type="submit" name="submit" value="Peppa!">',
         '</form></div>';

我返回到我的索引页面,但没有任何内容添加到数据库中,我就是不知道为什么。我丢失的代码有什么问题吗?

【问题讨论】:

  • 使用此答案获取 PDO 错误:stackoverflow.com/questions/3999850/pdo-error-message
  • 您的绑定与您的列名不匹配。即:':title' 应该是 ':movie_title' 等。
  • @Fred-ii- 我试过了,但还是不行。 @Hast 我在执行后尝试使用代码print_r($sql-&gt;errorInfo()) 并拿走了标头,没有收到错误消息,我在我的dbconnection 中得到了PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING
  • 还可以尝试将'{$_POST['title']}' 更改为'{$_POST[title]}' 等。
  • @Fred-ii- 我尝试更改它,但仍然没有运气。至少现在错误消息正在工作,所以我会尝试调试它。

标签: php variables input pdo insert


【解决方案1】:

试试这个:

if (isset($_POST['submit'])) {
    $sql_1 = "INSERT INTO watchlist (movie_title,
    movie_des,
    movie_link
    ) VALUES (
    :movie_title, 
    :movie_des, 
    :movie_link)";

    $sql = $dbh->prepare($sql_1);

    $sql->bindParam(':movie_title', $_POST['title']);
    $sql->bindParam(':movie_des', $_POST['description']);
    $sql->bindParam(':movie_link', $_POST['link']);
    $sql->execute(array(':movie_title' => $_POST['title'],':movie_des' => $_POST['description'],':movie_link' => $_POST['link']));

    if($sql != false) {
    echo "Success!";
    } else {
        echo "An error occured saving your data!";
    }

//  header("Location: ../index.php");
//  exit;
}

【讨论】:

  • 这行得通,但奇怪的是它在我的数据库中插入了实际变量,而不是变量引用的数据。因此,例如将“蝙蝠侠电影”插入我的数据库,而不是插入 $title。猜猜这与我发布的代码无关。我的应用程序一定有其他问题,正在寻找它是...
  • 嗯...我认为这可能与您的隐藏值 &lt;input type="hidden" name="title" value="$title"&gt; 等有关。@Bondenn
  • 您可以尝试将$sql-&gt;bindParam(':movie_title', $_POST['title']); 更改为$sql-&gt;bindParam(':movie_title', $_POST['title'], PDO::PARAM_STR); 看看它是否可以启动? @Bodenn 并尝试删除 value="$title"
  • 我会试试这个并告诉你!
  • 哇,我修好了!通过将value="$title" 更改为value="'.$title.'" :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多