2013-06-08 1 views
-6

Я пробовал свой мозг, пытаясь понять, что я здесь делаю неправильно. Я беру класс базы данных, и 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, но когда это вызвало ошибку и для меня. Не знаю, для чего это было.

+0

Несмотря на то, что отладка всегда сложная задача, Stack Overflow - неправильное место для вопросов, таких как «пожалуйста, отлаживайте мой код для меня». –

+1

Я понимаю, что вы новичок в 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

+0

Почему люди настаивают на публикации таких ответов ПОСЛЕ вопроса был дан ответ? Кто-то был достаточно любезен, чтобы помочь мне. Почему бы просто не оставить это на этом? Joe, user1281385 опубликовал ссылку. Если вы прочтете мой ответ ниже, вы увидите, что я понял и понял, что я делаю неправильно. Это не значит, что я «новый» для PHP. Я не беру класс PHP, поэтому отладка немного сложна. Поверьте мне, я потратил часы, когда Гуглинг пытался понять это самостоятельно, потому что я действительно ненавидел спрашивать здесь, зная, что я получу такие ответы. Если вы, ребята, не хотите отвечать на мой вопрос, пожалуйста, просто двигайтесь дальше. –

ответ

1

Ошибка говорит «Неправильный подсчет параметр»

так что вы пропускание неверного числа параметров.

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

показать вам нужно как минимум 2

попробовать это

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

Ваш инструктирует SSII означает вариант 1 и 2 представляют собой строки 3 и 4 являются INTS

+0

хорошо, отлично! это сработало. спасибо за ссылку. Я получаю это сейчас. 's' - это просто определить, что передается. «ssii» не работал, потому что я проходил только одну строку, а не 4. спасибо! – speedracer

+0

Из документов, Чтобы связать как строку, другие параметры: i d и b, Проверьте ссылку для получения дополнительной информации – exussum

Смежные вопросы