2016-05-30 4 views
-4

Я знаю, что на одной странице уже есть несколько вопросов по двум запросам, но я пробовал все, и я не могу заставить его работать.Два запроса базы данных

Я пытаюсь создать простую форму, которая добавляет введенное значение в базу данных, а затем выводит базу данных с помощью оператора select.

Что я делаю неправильно?

Вот что я получил. Спасибо!

<?php 
$dbhost = "localhost"; 
$dbuser = "widget_cms"; 
$dbpass = "blah123"; 
$dbdata = "widget_corp"; 
$connection = mysqli_connect($dbhost, $dbuser, $dbpass, $dbdata); 

if(mysqli_connect_errno()) { 
    die("database connection failed: " . 
     mysqli_connect_error() . 
      " (" . mysqli_connect_errno() . ")" 
    ); 
} else { 
    echo "success!"; 
} 

?> 


<?php 

if (isset($_POST["submit"])) { 
    $menu_name = ($_POST["menuName"]); 
    $position = ($_POST["pos"]); 
    $visibility = ($_POST["vis"]); 

    $query1 = "INSERT INTO subjects (menu_name, position, visibility) VALUES ('{$menu_name}', '{$position}', '{$visibility}'); "; 

    $result = mysqli_query($connection, $query1); 

    if(!$result) { 
     die("Database query failed"); 
    } 

} else { 
    echo "something didnt work idiot"; 
} 
?> 

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd"> 

<html lang="en"> 
<head> 
    <title>phpMysql</title> 
</head> 
<body> 

    <ul> 
    <form action="phpMysql.php" method="post"> 
    Menu Name: <input type="text" name="menuName" value=""><br> 
    Position: <input type="text" name="pos" value=""><br> 
    Visibility: <input type="text" name="vis" value=""><br> 
    <input type="submit" name="submit" value="Create account"><br> 
    </form> 
    </ul> 

    <?php print_r($_POST); ?> 

    <?php 

    $query1 = "SELECT * FROM subjects;" ; 

    $result = mysqli_query($connection, $query1); 

    if(!$result) { 
     die("Database query failed"); 
    } 
    ?> 

    <?php while ($row = mysqli_fetch_assoc($result)) { 
     var_dump($row); 
     echo "<hr />" ; 
    } 
    ?> 

    <?php mysqli_free_result($result); ?> 

</body> 
</html> 

<?php mysqli_close($connection); ?> 
+0

Пожалуйста, объясните, что не происходит или что происходит неправильно – RiggsFolly

ответ

0

Во-первых, у вас есть несколько ошибок в кодировании. Эта линия здесь:

$query1 = "INSERT INTO subjects (menu_name, position, visibility) VALUES ('{$menu_name}', '{$position}', '{$visibility}'); "; 

Неправильно. Вам не нужны никакие {} окружающие переменные. Кроме того, у вас есть дополнительный; в ваших цитатах. это не сработает с ними. Вот правильный код:

$query1 = "INSERT INTO subjects (menu_name, position, visibility) VALUES ('$menu_name', '$position', '$visibility')"; 

Также эта линия также плохая, вы включили дополнительную плату; в вашем запросе.

$query1 = "SELECT * FROM subjects;" ; 

Это должно быть так:

$query1 = "SELECT * FROM subjects"; 

Существует также немного очистки вы можете сделать. Множество блоков php можно объединить в отдельные блоки, чтобы ваш код выглядел намного опрятным. Вот ваш отредактированный код со всеми исправлениями, которые я заметил.

<?php 

$dbhost = "localhost"; 
$dbuser = "widget_cms"; 
$dbpass = "blah123"; 
$dbdata = "widget_corp"; 
$connection = mysqli_connect($dbhost, $dbuser, $dbpass, $dbdata); 

if(mysqli_connect_errno()) { 
    die("database connection failed: " . 
     mysqli_connect_error() . 
      " (" . mysqli_connect_errno() . ")" 
    ); 
} else { 
    echo "success!"; 
} 

if (isset($_POST["submit"])) { 
    $menu_name = ($_POST["menuName"]); 
    $position = ($_POST["pos"]); 
    $visibility = ($_POST["vis"]); 

    $query1 = "INSERT INTO subjects (menu_name, position, visibility) VALUES ('$menu_name', '$position', '$visibility')"; 

    $result = mysqli_query($connection, $query1); 

    if(!$result) { 
     die("Database query failed"); 
    } 

} else { 
    echo "something didnt work idiot"; 
} 
?> 

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd"> 

<html lang="en"> 
<head> 
    <title>phpMysql</title> 
</head> 
<body> 

    <ul> 
    <form action="phpMysql.php" method="post"> 
    Menu Name: <input type="text" name="menuName" value=""><br> 
    Position: <input type="text" name="pos" value=""><br> 
    Visibility: <input type="text" name="vis" value=""><br> 
    <input type="submit" name="submit" value="Create account"><br> 
    </form> 
    </ul> 

<?php 

    print_r($_POST); 

    $query1 = "SELECT * FROM subjects"; 

    $result = mysqli_query($connection, $query1); 

    if(!$result) { 
     die("Database query failed"); 
    } 

    while ($row = mysqli_fetch_assoc($result)) { 
     var_dump($row); 
     echo "<hr />" ; 
    } 

    mysqli_free_result($result); 

?> 

</body> 
</html> 

<?php mysqli_close($connection); ?> 

Обратитесь к документации по запросам, если вы не знаете, как кодировать его правильно или встретив вопросы, которые вы не понимаете. http://php.net/manual/en/mysqli.query.php Я также предлагаю заглянуть в подготовленные заявления. Они намного лучше и безопаснее, чем стандартный запрос mysqli. http://php.net/manual/en/mysqli.quickstart.prepared-statements.php

+0

Я этого не знал. Благодаря! Но первый запрос все еще не прошел. Похоже, что он пропускает команду запроса insert и выполняет «запрос базы данных не удалось». Что происходит не так? – zach

+0

Запустите 'var_dump();' на $ result и посмотрите, что вы получаете. – gravvy

+0

Ничего не получается. Запрос получается отлично, но результат $ просто не будет работать. – zach