#php #html #database #sqlite #pdo
#php #HTML #База данных #sqlite #pdo
Вопрос:
ИТАК, я пытался найти ответ в Интернете, но, похоже, я не получил ответа. Я прочитал все ссылки на PHP на http://php.net , и я до сих пор не могу найти конкретного ответа на этот вопрос.. В любом случае.
Мой вопрос:
У меня есть исходный файл PHP, который загружается в HTML-файл через:
<form name="input" action="register.php" method="get">
User: <input type="text" name="user" />
Pass: <input type="text" name="pass" />
<p><input type="submit" value="Submit" />
</form>
Пока все хорошо, не так ли? Итак, тогда у меня есть этот файл .php:
<?php
$db = new PDO('sqlite::database:');
$a = $_GET['user'];
$b = $_GET['pass'];
$firstSearchF = $db->prepare('SELECT nome FROM Users WHERE name_U = _nome');
$firstSearchF->bindParam('_nome', $a, PDO::PARAM_STR);
$firstSearchF->execute();
$firstSearch = $firstSearchF->fetch();
if(empty($firstSearch))
{
$final = $db->prepare('INSERT INTO Users (name_u,password) VALUES(nome,passW)');
$final->bindParam('nome', $a, PDO::PARAM_STR);
$final->bindParam('passW', $b, PDO::PARAM_STR);
$final->execute();
echo 'User Registered Successfully!';
}
else
{
echo 'Sorry, but the requested user already exists in the database. Try again!';
}
?>
Всякий раз, когда я что-то ввожу в форму и нажимаю отправить, результат будет следующим:
"prepare('SELECT nome FROM Users WHERE name_U = _nome'); $firstSearchF->bindParam('_nome', $a, PDO::PARAM_STR); $firstSearchF->execute(); $firstSearch = $firstSearchF->fetch(); if(empty($firstSearch)) { $final = $db->prepare('INSERT INTO Users (name_u,password) VALUES(nome,passW)'); $final->bindParam('nome', $a, PDO::PARAM_STR); $final->bindParam('passW', $b, PDO::PARAM_STR); $final->execute(); echo 'User Registered Successfully!'; } else { echo 'Sorry, but the requested user already exists in the database. Try again!'; } ?>"
Единственная проблема заключается в том, что я понимаю, что вывод — это то, что находится после -> . Но почему это происходит? Я просто хотел проверить это, и я не могу заставить выходные данные работать, например, что после эхо-сигналов.
Что можно сделать, чтобы исправить это? Есть идеи? Заранее благодарю. ^^
Ответ №1:
Первым делом включите отчеты об ошибках для разработки, разместив это в верхней части вашего скрипта
ini_set('display_errors', 'On');
error_reporting(E_ALL);
Во-вторых, ваш SQLite DSN неверен. Это должно быть либо
sqlite:/path/to/database/file
или
sqlite::memory:
См. http://www.php.net/manual/en/ref.pdo-sqlite.connection.php
Ваш параметр bind также неверен. Перед ним должен быть префикс с двоеточием, например
$firstSearchF = $db->prepare('SELECT nome FROM Users WHERE name_U = :nome');
$firstSearchF->bindParam('nome', $a, PDO::PARAM_STR);
То же самое касается других операторов и привязки.
Наконец, я не до конца верю, что код, который вы опубликовали в своем вопросе, совпадает с тем, который отображается в вашей среде. Не могли бы вы перепроверить и опубликовать какие-либо исправления?
Кроме того, отправка учетных данных через GET
форму, не круто. Используйте POST
вместо этого. Хранение паролей в виде обычного текста, также нет-нет.
Обновить
Если подумать, учитывая то, что вы видите, я сомневаюсь, что вы запускаете это на веб-сервере с поддержкой PHP. Убедитесь, что у вас есть работающий веб-сервер с PHP, установленным в качестве модуля или CGI.
Комментарии:
1. Ну, я прочитал все, и я тоже кое-что менял, но, похоже, я получаю те же результаты. Все, что я делаю, это создаю файл .php в notepad , а затем запускаю html с формой в Firefox. Кроме того, текстовые пароли — это всего лишь вопрос тестирования, потому что это для проекта Uni, на самом деле довольно просто. Чего я не понимаю, так это почему у меня проблемы с выводом.
2. Я думаю, что ваше «обновление» правильно, этот скрипт даже выполняется как PHP? jsfiddle.net/g9Sju Слишком смешно… 🙂
3. Ну, согласно тому, что я видел в классе, да, он выполняется как PHP. Я не вижу никаких ошибок в коде, вот почему я спрашиваю об этом. Не имеет смысла, что он вообще не запускается, потому что простое echo ‘Hello World’; работает отлично.
4. @Nelspike Попробуйте простой тест, подобный этому
<?php $world = 'sailor'; echo "Hello, $world!"; ?>
5. @Nelspike: Вам нужен сервер, и с установленным PHP вы не можете просто открыть файл в своем браузере из любого случайного места на вашем компьютере и ожидать, что он выполнит PHP (однако HTML будет работать, потому что он запускается в браузере). См. WAMP или MAMP .