-6

我一直在绞尽脑汁想弄清楚我在这里做错了什么。我正在上数据库课程,但并没有真正教过 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 个字段,艺术家 ID 和艺术家姓名。当我尝试添加名称时,出现以下错误:

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

我究竟做错了什么?当我不了解 PHP 时,很难调试。我已经用谷歌搜索并尝试了各种各样的东西,但没有任何效果。应该注意的是,我的导师在绑定语句中有“ssii”,但是这也给我带来了错误。不知道它是干什么用的。

4

1 回答 1

1

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

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

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

表明你至少需要 2

尝试这个

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

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

于 2013-06-08T14:48:25.930 回答