我一直绞尽脑汁试图找出我在这里做错了什么。我正在上一个数据库课程,并没有真正教过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”,但是当这也导致了我的错误。不知道它是什么。
答案 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是整数