Я пробовал свой мозг, пытаясь понять, что я здесь делаю неправильно. Я беру класс базы данных, и PHP на самом деле не учили. Нам просто дали фрагменты кода для включения в наш окончательный проект. Пример работает, но я не могу заставить меня работать, чтобы спасти мою жизнь. Я решил снять форму до одного поля. Вот HTML форма фрагмент:PHP/MySQLI Вставить в базу данных не работает
<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. Когда я пытаюсь добавить имя, я получаю следующую ошибку:
Warning: Wrong parameter count for mysqli_stmt::bind_param() in /nfs/stak/students/b/brownste/public_html/add.php on line 15 Bind failed: 0 Execute failed: 2031 No data supplied for parameters in prepared statement
Что я делаю неправильно? Чрезвычайно сложно отлаживать, когда я не знаю PHP. Я Googled и пробовал всевозможные вещи, но ничего не работает. Следует отметить, что мой инструктор имел «ssii» в инструкции bind, но когда это вызвало ошибку и для меня. Не знаю, для чего это было.
Несмотря на то, что отладка всегда сложная задача, Stack Overflow - неправильное место для вопросов, таких как «пожалуйста, отлаживайте мой код для меня». –
Я понимаю, что вы новичок в PHP, но ошибка на самом деле довольно ясна, и просто просмотр документации легко решает вашу проблему: [http://php.net/manual/en/mysqli-stmt.bind-param.php ] (http://php.net/manual/en/mysqli-stmt.bind-param.php#refsect1-mysqli-stmt.bind-param-parameters) – Joe
Почему люди настаивают на публикации таких ответов ПОСЛЕ вопроса был дан ответ? Кто-то был достаточно любезен, чтобы помочь мне. Почему бы просто не оставить это на этом? Joe, user1281385 опубликовал ссылку. Если вы прочтете мой ответ ниже, вы увидите, что я понял и понял, что я делаю неправильно. Это не значит, что я «новый» для PHP. Я не беру класс PHP, поэтому отладка немного сложна. Поверьте мне, я потратил часы, когда Гуглинг пытался понять это самостоятельно, потому что я действительно ненавидел спрашивать здесь, зная, что я получу такие ответы. Если вы, ребята, не хотите отвечать на мой вопрос, пожалуйста, просто двигайтесь дальше. –