Php 警告:mysqli_stmt::bind_param()的参数计数错误

Php 警告:mysqli_stmt::bind_param()的参数计数错误,php,mysqli,Php,Mysqli,我一直绞尽脑汁想弄清楚我到底做错了什么。我正在上一堂数据库课,PHP并没有真正教过。我们刚刚得到了要包含在最终项目中的代码片段。这个例子是有效的,但我不能让我的工作来拯救我的生命。我决定把表格缩减到一个字段。以下是HTML表单片段: <form method="post" action="add.php"> <table width="100%" border="0" cellspacing="3"> <t

我一直绞尽脑汁想弄清楚我到底做错了什么。我正在上一堂数据库课,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.";
}

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

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


我做错了什么?当我不懂PHP时,调试非常困难。我在谷歌上搜索过,尝试过各种各样的东西,但都没用。应该注意的是,我的指导老师在bind语句中有ssii,但这也导致了我的错误。不知道是什么原因。

错误显示参数计数错误

因此,您传递了错误数量的参数

显示您至少需要2个

试试这个

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

您的指令ssii意味着选项1和2是字符串3和4是整数

,尽管调试总是一项艰巨的工作,堆栈溢出是一个错误的问题,比如请为我调试我的代码。我知道你是PHP新手,但错误非常明显,只要看一下文档就可以很容易地解决你的问题:为什么人们在回答问题后坚持发布这类回复?有人很好地帮助了我。为什么不就这么说呢?Joe,用户1281385发布了链接。如果你读了我下面的回复,你会发现我明白了,明白我做错了什么。这并不是说我是PHP新手。我没有学习PHP课程,所以调试有点困难。相信我,我花了几个小时在谷歌上搜索,试图自己弄明白这一点,因为我真的不想在这里问,因为我知道我会得到这样的回答。如果你们不想回答我的问题,那就请继续。对于那些因为缺乏研究而忍不住把我的问题记下来的人,我到底在绞尽脑汁想弄清楚我在这里做错了什么,我在谷歌上搜索过,尝试过各种各样的事情,但什么都没用?在某个时候,转动轮子会浪费时间,而常识要求你寻求帮助。不是答案。帮帮忙,好的,太好了!成功了。谢谢你的链接。我现在明白了。“s”只是定义要传递的内容ssii'不起作用,因为我只传递了一个字符串,而不是4个字符串。谢谢从文档中,要绑定为字符串,其他选项为ID和b,请查看链接以了解更多信息