Итак, я пытаюсь сделать это в течение нескольких дней, и я читал всевозможные учебники, но мне, кажется, что-то не хватает, потому что я все еще могу " Получить его. Я работаю над изучением веб-форм и вводом ввода формы в соответствующую базу данных. Я могу взять информацию из формы и повторить ее на странице результатов, поэтому я знаю, что все работает. но я не могу получить ввод формы для входа в мою базу данных. Я знаю, что соединение работает, поэтому в моем синтаксисе должно быть что-то не так.Попытка вставить новую строку в базу данных с помощью PDO
PHP
//DB Configs
$username = null;
$password = null;
try {
$db = new PDO("mysql:host=localhost;dbname=Testing3", $username, $password);
//Set the PDO error mode to exception (what does this mean?)
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//Prepare SQL and bind parameters
$sql = $db->prepare("INSERT INTO `NFK_SPECIES` (`Name`)
VALUES (:name)");
//Insert a Row
$species = $_POST['Species'];
$sql->execute(array(':name'=>$species));
}
catch (PDOException $e) {
echo "Error: " . $e->getMessage();
}
$result = $db->query('SELECT * from `NFK_Species` ORDER BY `Id` DESC');
//Query
/*
$input = $db->query("INSERT INTO `NFK_Species` (`Id`, `Name`) VALUES (Null, `$species`)");
$result = $db->query('SELECT * from `NFK_Species` ORDER BY `Id` DESC');*/
//Kill Connection
$db = Null;
}
HTML/PHP (веб-страницы)
<h1>Inserting a New Species into Database:</h1>
<h3>Results</h3>
<?php
if ($sql->execute()){
echo "Data input was successful";
while ($rows = $result->fetch()){
echo $rows['Name']; echo ", ";
}
} else {
echo "Data input failed."; echo mysql_error();
}
?>
Это только моя текущая попытка сделать это. Я предпочитаю попытку, которую я имел раньше, с bindParam
и простой execute()
, поэтому, если бы я мог заставить это работать, я был бы признателен. Следующий пример также содержит столбец Id
для этой таблицы. Это столбец с автоматическим приращением, который я читаю, не обязательно должен быть включен, поэтому я исключил его из моей недавней попытки. Это верно?
Прошлое PHP
//Prepare SQL and bind parameters
$sql = $db->prepare("INSERT INTO `NFK_SPECIES` (`Id`, `Name`)
VALUES (Null, :name)");
$sql->bindParam(':name', $species);
//Insert a Row
$species = $_POST['Species'];
$sql->execute();
Я читал кучу учебников (или пытаются), в том числе попытки расшифровать PHP.net учебники, но все они, кажется, написана для тех, кто уже есть хорошая ручка на этом и опыт в том, что происходит, и я очень новичок во всем этом.
показать нам форму тогда. Плюс 'mysql_error()', если это часть вашего рабочего кода, он не относится к PDO. Вы также используете этот '$ species = $ _POST ['Species'];' ** после ** вы привязываетесь. –
Удалите 'if ($ sql-> execute()) {}' из цикла выборки, потому что _already_ выполнил оператор. Поскольку он завернут в 'try/catch', вы можете перейти непосредственно в цикл выборки. –
В блоке «Предыдущий PHP» у вас есть строка привязки, прежде чем вы установите переменную вида. Это не здесь и не там, потому что первый пример выглядит хорошо. Какие результаты вы получаете - какая ошибка sql вызывается – dlporter98