php - 使用 pdo/php 在表中插入数据

标签 php mysql pdo

我需要帮助,我的代码无法工作,它不会插入到表数据库中。我觉得我的代码写得不好。我需要工作的部分是第一个开关盒!

我需要它位于 pdo 中,我的数据库和表数据是正确的。

<?php

if (isset($_GET['poslovni_korisnici'])) {
$active1 = 'class="active"';
}
else {
$active1 = '';
}
if(isset($_GET['korisnici'])) {
$active2 = 'class="active"';
}
else {
$active2 = '';
}

/*** mysql hostname ***/
$hostname = 'localhost';

/*** mysql username ***/
$username = 'root';

/*** mysql password ***/
$password = '';

try {
$dbh = new PDO("mysql:host=$hostname;dbname=zadatak1", $username, $password);
/*** echo a message saying we have connected ***/
/**echo 'Connected to database';**/
}
catch(PDOException $e)
{
echo $e->getMessage();
}

echo'
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Statistika</title>

    <!-- Bootstrap -->
    <link href="css/bootstrap.css" rel="stylesheet">

    <!-- DataTables CSS -->
    <link rel="stylesheet" type="text/css" href="//cdn.datatables.net/1.10.4/css/jquery.dataTables.css">

    <!-- jQuery -->
    <script type="text/javascript" charset="utf8" src="//code.jquery.com/jquery-1.10.2.min.js"></script>

    <!-- DataTables -->
    <script type="text/javascript" charset="utf8" src="//cdn.datatables.net/1.10.4/js/jquery.dataTables.js"></script>

    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
    <!-- WARNING: Respond.js doesnt work if you view the page via file:// -->
    <!--[if lt IE 9]>
      <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
      <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
  </head>
  <body>

    <nav class="navbar navbar-default">
    <div class="container-fluid">
    <!-- Brand and toggle get grouped for better mobile display -->
    <div class="navbar-header">
    <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
    <span class="sr-only">Toggle navigation</span>
    <span class="icon-bar"></span>
    <span class="icon-bar"></span>
    <span class="icon-bar"></span>
    </button>
    <a class="navbar-brand" href="index.php">POSLOVNA STATISTIKA</a>
    </div>
    <!-- Collect the nav links, forms, and other content for toggling -->
    <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
    <ul class="nav navbar-nav">
    <li ' . $active1 . '><a href="index.php?poslovni_korisnici">Poslovni korisnici <span class="sr-only">(current)</span></a></li>
    <li ' . $active2 . '><a href="index.php?korisnici">Korisnici</a></li>
    </ul>
    </div><!-- /.navbar-collapse -->
    </div><!-- /.container-fluid -->
    </nav>';

        switch (isset($_GET)) {
            case isset($_GET['unosPoslovni']):

                if(isset($_POST['submit1']))
                    {


                    $partner_name    = $_POST['Partner_name'] = NULL;
                    $partner_street  = $_POST['Partner_street'] = NULL;
                    $partner_zip     = $_POST['Partner_zip'] = NULL;
                    $partner_city    = $_POST['Partner_city'] = NULL;
                    $partner_country = $_POST['Partner_country'] = NULL;

                    $sql = "INSERT INTO poslovni_partneri 
                           (Partner_name,Partner_street, Partner_zip, Partner_city, Partner_country) 
                           VALUES('$partner_name','$partner_street',$partner_zip, $partner_city, $partner_country";                         
                    $result = mysql_query($sql);            
                  }         
                echo'
                <h1>Unos poslovni korisnika</h1>
                </br>
                </br>

                <form action="unos.php?unosPoslovni" method="POST" target="_parent" accept-charset="UTF-8">
                <table id="table_id" class="display">
                    <thead>
                        <tr>
                          <th>Partner name</th>
                          <th>Partner street</th>
                          <th>Partner zip</th>
                          <th>Partner city</th>
                          <th>Partner country</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr>
                            <td><input type="text" name="partner_name" value=""></td>
                            <td><input type="text" name="partner_street" value=""></td>
                            <td><input type="text" name="partner_zip" value=""></td>
                            <td><input type="text" name="partner_city" value=""></td>
                            <td><input type="text" name="partner_country" value=""></td>
                        </tr> 
                    </tbody>
                </table>        
                <input type="submit" name="submit1" value="Spremi" />
                </form>';



                break;

            default:
                # code...
                break;
        }

        switch (isset($_GET)) {
            case isset($_GET['unosKorisnici']):

                echo'
                <h1>Unos korisnika</h1>
                </br>
                </br>

                <form action="unos.php?unosPoslovni" method="POST" target="_parent" accept-charset="UTF-8">
                <table id="table_id" class="display">
                    <thead>
                        <tr>
                          <th>User name</th>
                          <th>User department</th>
                          <th>User email</th>
                          <th>User phone</th>
                          <th>User mobile</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr>
                            <td><input type="text" name="user_name" value=""></td>
                            <td><input type="text" name="user_department" value=""></td>
                            <td><input type="text" name="user_email" value=""></td>
                            <td><input type="text" name="user_phone" value=""></td>
                            <td><input type="text" name="user_mobile" value=""></td>
                        </tr> 
                    </tbody>
                </table>
                </form>';

                break;

            default:
                # code...
                break;
        }


    echo'
    <script>
      $(document).ready( function () {
          $("#table_id").DataTable();
      } );
    </script>

    <!-- jQuery (necessary for Bootstraps JavaScript plugins) -->
    <!-- <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> -->
    <!-- Include all compiled plugins (below), or include individual files as needed -->
    <script src="js/bootstrap.min.js"></script>
  </body>
</html>';    

?>

最佳答案

您的 SQL 查询无效,因为它缺少右括号 ( ) );

INSERT INTO poslovni_partneri(Partner_name,Partner_street, Partner_zip, Partner_city,     Partner_country) 
VALUES('$partner_name','$partner_street',$partner_zip, $partner_city, $partner_country";

应该看起来更像这样:

INSERT INTO poslovni_partneri(Partner_name,Partner_street, Partner_zip, Partner_city,     Partner_country) 
VALUES('$partner_name','$partner_street','$partner_zip', '$partner_city', '$partner_country')";

您也应该与引号保持一致,有时在变量周围使用它,有时则不然。

此外,您甚至不应该以这种方式查询;你应该使用 prepared statements因为这样你就可以打开 SQL injections .

编辑

您说您需要 PDO,您正在建立 PDO 连接,但您正在使用 mysql_* 特定函数进行查询,这是您应该做的使用PDO,与PDO无关。

编辑2

您还应该验证帖子参数是否实际可用,对您的帖子参数执行类似的操作:

$partner_name = isset($_POST['partner_name']) ? $_POST['partner_name'] : '';

(注意小写的 p)

使用ternary operator ,并对所有 post 参数执行此操作,如果您的任何参数是空字符串,则显示错误而不是查询。

编辑3

正如fred所指出的,partner_name != Partner_name,即您的name属性标识符(在html中)与那些不匹配您试图在帖子参数中匹配。

关于php - 使用 pdo/php 在表中插入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27902443/

相关文章:

php - 计算数据库字段上的代码行数

php - 我怎样才能通过 Laravel 关系进行两次连接?

MySql 与 NULL 行相乘的列

php - 在准备好的语句中不工作标记

php - 如何在 PHP 中打印十六进制 UTF-8 字符

php - 如何在 Javascript 和 PHP 中验证非英语(UTF-8)编码的电子邮件地址?

php - 获取下拉选择以将用户定向到新页面(MySQL && P4A 应用程序框架)

mysql - 使用 Passport.js 、 React js 、 MySQL 进行用户注册和登录系统

PHP PDO 未从用户表中删除 2 个字段

php - 我可以将数组绑定(bind)到 PDO 查询中的 IN() 条件吗?