drtppp75155
2014-01-29 21:57 阅读 186
已采纳

bind_param()问题

I am getting issues with the bind_param function. I will post all the information below.

Error:

Fatal error: Call to a member function bind_param() on a non-object in /home4/lunar/public_html/casino/blogpost.php on line 88

MySQL Error:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ':user, :title, :message, :image, :category, NOW())' at line 1

Query:

    $user = $_COOKIE['user'];
    $title = $_POST['title'];
    $message = $_POST['message'];
    $image = $_POST['image'];
    $category = $_POST['category'];
    $stmt = $mysqli->prepare("INSERT INTO `lunar_casino`.`posts` (`id`, `by`, `title`, `message`, `image`, `category`, `date`) VALUES(NULL, :user, :title, :message, :image, :category, NOW())");
    echo $mysqli->error;
    $stmt->bind_param(":user", $user);
    $stmt->bind_param(":title", $title);
    $stmt->bind_param(":message", $message);
    $stmt->bind_param(":image", $image);
    $stmt->bind_param(":category", $category);
    $stmt->execute();
    if(!$stmt){
      echo "<font color='red'><b>There has been an error with our database! Please contact the website administrator!</b></font><br /><br />";
      echo $mysqli->error;
    } else {
      echo "<font color='green'><b>You have successfully added a blog post!</b></font><br /><br />";
    }

Any ideas why its like this?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • 已采纳
    dongtang4954 dongtang4954 2014-01-29 22:03

    As Rocket Hazmat mentioned you can only use question marks as bind parameter place holder. You should do something similar:

     $stmt = $mysqli->prepare("INSERT INTO `lunar_casino`.`posts` (`id`, `by`, `title`, `message`, `image`, `category`, `date`) VALUES(NULL, ?, ?, ?, ?, ?, NOW())");
     $stmt->bind_param("sssss", $user, $title, $message, $image, $category);
    

    More details: http://www.php.net/manual/en/mysqli-stmt.bind-param.php

    点赞 评论 复制链接分享
  • douna5529 douna5529 2014-01-30 02:22

    $stmt->bind_param("sssss", $user, $title, $message, $image, $category); on the first argument the s = string and i = integer. You need to specify which type of value you want to add to the database. If you want to add 5 values that are strings to the database then write 'sssss' if you want to insert 5 integers then write 'iiiii' if you have some integers values and some string values then you can adjust accordingly.

    //so if your values are all strings then this would be correct : $stmt->bind_param("sssss", $user, $title, $message, $image, $category);

    //so if your values are all integers then this would be correct : $stmt->bind_param("iiiii", $user, $title, $message, $image, $category);

    //if the first 2 are integers and the other 3 strings then this would be correct : $stmt->bind_param("iisss", $user, $title, $message, $image, $category);

    and so on.

    点赞 评论 复制链接分享

相关推荐