показать динамические данные на моем сайте по колбе [дубликат]

Запрос может быть неудачным по различным причинам, и в этом случае оба mysql_ * и расширение mysqli вернут false из своих соответствующих функций / методов запроса. Вам нужно проверить это условие ошибки и обработать его соответствующим образом.

mysql_ * extension :

ПРИМЕЧАНИЕ Функции mysql_ устарели и были удалены в версии 7 php.

blockquote>

Перед передачей mysql_fetch_array проверьте $result. Вы обнаружите, что это false, потому что запрос завершился неудачно. См. Документацию mysql_query для возможных возвращаемых значений и предложений о том, как с ними обращаться.

$username = mysql_real_escape_string($_POST['username']);
$password = $_POST['password'];
$result = mysql_query("SELECT * FROM Users WHERE UserName LIKE '$username'");

if($result === FALSE) { 
    die(mysql_error()); // TODO: better error handling
}

while($row = mysql_fetch_array($result))
{
    echo $row['FirstName'];
}

расширение mysqli процедурный стиль :

$username = mysqli_real_escape_string($mysqli, $_POST['username']);
$result = mysqli_query($mysqli, "SELECT * FROM Users WHERE UserName LIKE '$username'");

// mysqli_query returns false if something went wrong with the query
if($result === FALSE) { 
    yourErrorHandler(mysqli_error($mysqli));
}
else {
    // as of php 5.4 mysqli_result implements Traversable, so you can use it with foreach
    foreach( $result as $row ) {
        ...

oo-style :

$username = $mysqli->escape_string($_POST['username']);
$result = $mysqli->query("SELECT * FROM Users WHERE UserName LIKE '$username'");

if($result === FALSE) { 
    yourErrorHandler($mysqli->error); // or $mysqli->error_list
}
else {
    // as of php 5.4 mysqli_result implements Traversable, so you can use it with foreach
    foreach( $result as $row ) {
      ...

с использованием подготовленного оператора:

$stmt = $mysqli->prepare('SELECT * FROM Users WHERE UserName LIKE ?');
if ( !$stmt ) {
    yourErrorHandler($mysqli->error); // or $mysqli->error_list
}
else if ( !$stmt->bind_param('s', $_POST['username']) ) {
    yourErrorHandler($stmt->error); // or $stmt->error_list
}
else if ( !$stmt->execute() ) {
    yourErrorHandler($stmt->error); // or $stmt->error_list
}
else {
    $result = $stmt->get_result();
    // as of php 5.4 mysqli_result implements Traversable, so you can use it with foreach
    foreach( $result as $row ) {
      ...

Эти примеры только иллюстрируют , что должно быть сделано (обработка ошибок), а не как это сделать. При выпуске HTML код производства не должен использовать or die , иначе он будет (по крайней мере) генерировать недопустимый HTML. Кроме того, сообщения об ошибках базы данных не должны отображаться для пользователей, не являющихся администраторами, так как раскрывает слишком много информации .

34
задан davidism 28 October 2015 в 19:03
поделиться

3 ответа

Вы должны создать свои файлы шаблонов в правильном месте; в подкаталоге templates рядом с вашим модулем python.

Ошибка указывает, что в каталоге templates/ нет файла home.html. Убедитесь, что вы создали этот каталог в том же каталоге, что и ваш модуль python, и что вы действительно поместили файл home.html в этот подкаталог. Если ваше приложение является пакетом, папка шаблонов должна быть создана внутри пакета.

myproject/
    app.py
    templates/
        home.html
myproject/
    mypackage/
        __init__.py
        templates/
            home.html

Кроме того, если вы назвали папку шаблонов чем-то другим чем templates и не хотите переименовывать его по умолчанию, вы можете указать Flask использовать этот другой каталог.

app = Flask(__name__, template_folder='template')  # still relative to module
75
ответ дан jalanb 26 August 2018 в 06:59
поделиться

Я не знаю почему, но вместо этого мне пришлось использовать следующую структуру папок. Я поставил «шаблоны» на один уровень.

project/
    app/
        hello.py
        static/
            main.css
    templates/
        home.html
    venv/

Это, вероятно, указывает на неправильную конфигурацию в другом месте, но я не мог понять, что это такое, и это сработало.

3
ответ дан davidism 26 August 2018 в 06:59
поделиться

Вам нужно поместить все файлы .html в папку шаблона рядом с вашим модулем python. И если в ваших html-файлах есть какие-либо изображения, вам нужно поместить все ваши файлы в папку с именем static

. В следующей структуре

project/
    hello.py
    static/
        image.jpg
        style.css
    templates/
        homepage.html
    virtual/
        filename.json
0
ответ дан Madhusudan chowdary 26 August 2018 в 06:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: