【问题标题】:Converting MySql Insert To PDO将 MySql 插入转换为 PDO
【发布时间】:2014-06-06 21:53:45
【问题描述】:

我正在尝试将其转换为 PDO:

echo 'sup 1';                                        
$sql = "INSERT INTO blogData(
        title,
        content,
        category) 
        VALUES ( 
        :title, 
        :content, 
        :category)";
     echo 'sup 2';                                 
$stmt = prepare($sql);
                    echo 'sup 3';                          
$stmt->bindParam(':title', $_POST['title'], PDO::PARAM_STR);       
$stmt->bindParam(':content', $_POST['content'], PDO::PARAM_STR); 
$stmt->bindParam(':category', 'City Secrets', PDO::PARAM_STR);
                               echo 'sup 4';       
$stmt->execute(); 
echo 'sup 5';
      header('location: http://www.backToThePageIPostedOn.com');

这是我当前的代码,但它没有进入数据库:

$sql = "INSERT INTO blogData(
            title,
            content,
            category) 
            VALUES ( 
            :title, 
            :content, 
            :category)";

$stmt = $pdo->prepare($sql);

$stmt->bindParam(':title', $_POST['title'], PDO::PARAM_STR);       
$stmt->bindParam(':content', $_POST['content'], PDO::PARAM_STR); 
$stmt->bindParam(':category', 'City Secrets', PDO::PARAM_STR);

$stmt->execute(); 
 header('location: http://www.backToThePageIPostedOn.com');

它在脚本页面上停止。这是我第一次使用 PDO,所以如果有人能指出我语法中的错误,我将不胜感激。

我的代码没有通过echo 'sup 2'; 所以我相信错误就在这一行,$stmt = $pdo->prepare($sql);

我按照教程执行此操作,但我不明白他们为什么要添加 $pdo 在。 我假设那应该是我的连接,但我将其设置为 $con 当我改变 $pdo 到 $con 我仍然在 echo 'sup 2' 处被截断;

【问题讨论】:

  • 这个$stmt->bindParam(':category', 'City Secrets', PDO::PARAM_STR);应该很可能需要是$stmt->bindValue(':category', 'City Secrets', PDO::PARAM_STR);
  • 不,没有帮助的先生。错误在这一行,$stmt = $pdo->prepare($sql);它必须是 $pdo 但我遵循了一个教程,但我不确定应该是什么
  • 那么您需要向我们展示您的 PDO 连接是什么,将凭据替换为 xxx
  • 启用错误报告和/或检查错误日志以提供实际发生的错误
  • AHHH 已修复。这是3个问题。感谢您的帮助!回答,这样我就可以给你信任。

标签: php mysql pdo sql-insert


【解决方案1】:

语句 bindParam 方法通过引用接受第二个参数。只有变量可以通过引用传递。

解决方案是将要绑定的参数分配给变量:

$stmt = $pdo->prepare($sql);

$title = $_POST['title'];
$content = $_POST['content'];
$category = 'City Secrets';

$stmt->bindParam(':title', $title, PDO::PARAM_STR);
$stmt->bindParam(':content', $content, PDO::PARAM_STR);
$stmt->bindParam(':category', $category, PDO::PARAM_STR);

$stmt->execute();

【讨论】:

  • 问题出在 $stmt = $pdo->prepare($sql);你是对的,需要改变,但这不是我的问题。
  • 正确答案是 Fred 在 cmets 中发布的内容。
【解决方案2】:

这是上述问题的正确工作代码。

$stmt->bindParam

改为

 $stmt->bindValue 

并添加了connection.php 文件用于数据库连接。

<?php                           
require_once( 'connection.php' );

$sql = "INSERT INTO blogData(
            title,
            content,
            category) 
            VALUES ( 
            :title, 
            :content, 
            :category)";

$stmt = $con->prepare($sql);

$stmt->bindParam(':title', $_POST['title'], PDO::PARAM_STR);       
$stmt->bindParam(':content', $_POST['content'], PDO::PARAM_STR); 
$stmt->bindValue(':category', 'City Secrets', PDO::PARAM_STR);

$stmt->execute(); 

 header('location: http://www.website.com');
?>           

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-17
    • 2012-03-19
    • 2019-11-07
    • 2011-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多