PHP / MySQLI插入数据库无法正常工作

时间:2013-06-08 14:42:37

标签: php mysqli

我一直绞尽脑汁试图找出我在这里做错了什么。我正在上一个数据库课程,并没有真正教过PHP。我们刚刚给出了代码片段,以包含在我们的最终项目中。这个例子有效,但我不能让我的工作来挽救我的生命。我决定将表格剥离到一个字段。这是HTML表单摘录:

<form method="post" action="add.php">
              <table width="100%" border="0" cellspacing="3">
                <tr>
                  <td>Artist Name</td>
                </tr>
                <tr>
                  <td><input name="addArtistTextField" type="text" size="30" maxlength="30" /></td>
                </tr>
                <tr>
                  <td><input type="submit" /></td>
                </tr>
              </table>
            </form>

这是PHP文件(add.php)

<?php
//Turn on error reporting
ini_set('display_errors', 'On');

//Connects to the database
$mysqli = new mysqli("[*****]","[*****]","[*****]","[*****]");

if(!$mysqli || $mysqli->connect_errno){
    echo "Connection error " . $mysqli->connect_errno . " " . $mysqli->connect_error;
    }

if(!($stmt = $mysqli->prepare("INSERT INTO mytunes_artists (artist_name) VALUES (?)"))){
    echo "Prepare failed: "  . $stmt->errno . " " . $stmt->error;
}
if(!($stmt->bind_param($_POST['addArtistTextField']))){  // THIS IS LINE 15 GIVING ERROR
    echo "Bind failed: "  . $stmt->errno . " " . $stmt->error;
}
if(!$stmt->execute()){
    echo "Execute failed: "  . $stmt->errno . " " . $stmt->error;
} else {
    echo "Added " . $stmt->affected_rows . " rows to mytunes_artists.";
}

?>

我只想在我的表中添加一个艺术家名称,该表有2个字段,artist_id和artist_name。当我尝试添加名称时,出现以下错误:

  

警告:mysqli_stmt :: bind_param()中的参数计数错误   第15行上的/nfs/stak/students/b/brownste/public_html/add.php绑定   失败:0执行失败:2031没有为参数提供数据   准备好的声明

我做错了什么?当我不懂PHP时,非常难以调试。我用谷歌搜索并尝试了各种各样的东西,但没有任何作用。应该注意的是,我的讲师在绑定语句中有“ssii”,但是当这也导致了我的错误。不知道它是什么。

1 个答案:

答案 0 :(得分:1)

错误显示“参数计数错误”

所以你传递了错误数量的参数。

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

显示您至少需要2

试试这个

if(!($stmt->bind_param('s',$_POST['addArtistTextField'])))

您的指示ssii表示选项1和2是字符串3和4是整数