小编RaG*_*940的帖子

使用PDO语句选择表数据

我有一个PHP脚本,通过mysql_选择数据,但最近我一直在读PDO是要走的路,而且mysql_正在变得折旧.现在我将该脚本转换为PDO.

我的问题是,我没有使用$ _POST来选择.我只想选择包含所有数据的整个表,所以我输入以下查询:

$query = $dbh->prepare("SELECT * FROM students");
$query->execute();
$result = $query->fetchall(); // or you can just $result = $query as hakre proposed!
Run Code Online (Sandbox Code Playgroud)

所以就像我使用旧的折旧mysql_版本的脚本一样,我使用echo来回显一个带有数据的表.

    echo 
    "<table border='2'>
    <tr>
    <th>ID</th>
    <th>A Number</th>
    <th>First Name</th>
    <th>Last Name</th>
    <th>Why</th>
    <th>Comments</th>
    <th>Signintime</th>
    </tr>"
    ;

    foreach($result as $row)
    {
  echo "<tr>";
  echo "<td>" . $row['id'] . "</td>";
  echo "<td><a href=Student.php?studentA_num=" . $row['anum'] . ">" .$row['anum'] . " </a></td>";
  echo "<td>" . $row['first'] . "</td>";
  echo "<td>" . $row['last'] . "</td>";
  echo "<td>" . $row['why'] …
Run Code Online (Sandbox Code Playgroud)

php mysql select pdo

11
推荐指数
2
解决办法
3万
查看次数

理解准备语句 - PHP

我正在为一所大学的财政援助办公室开展一个学校项目.该项目已投入生产,其中大部分都是在这里和那里进行一些小调整之外完成的.我对冬歇期(现在)的主要关注是安全,并尽我所能防止任何违规行为.人们告诉我要引导准备好的陈述.除了插入数据之外,我在很大程度上理解它们.

我有两种形式:登录表格和学生登录表格.学生登录表输入学生来办公室的原因.然后提交该表格,然后通过一张表格检索该数据,该表格显示了辅导员学生们等待观看的内容.

我的问题是,虽然每个走进经济援助办公室的学生都有自己独特的问题(大部分时间),所以现在困扰我的是:

我是否需要提前考虑并预先制作插入查询,或者是否有办法进行"动态"查询,因为有一个学生评论框,为此它将是完全独特的,所以我将如何创建对此的查询?

<?php
define('DB_Name', 'dbtest');
define('DB_User', 'root');
define('DB_Password', 'testdbpass');
define('DB_Host', 'localhost');

$link = mysql_connect(DB_Host, DB_User, DB_Password);

if (!$link) {
  die ('Could Not Connect: ' . mysql_error ());
}

$db_selected = mysql_select_db(DB_Name, $link);

if (!db_selected) {
  die('Can Not Use ' . DB_name . ': ' . mysql_error());
}

$value1 = $_POST ['anum'];
$value2 = $_POST ['first'];
$value3 = $_POST ['last'];
$value4 = $_POST ['why'];
$value5 = $_POST ['comments'];

$sql = "INSERT INTO `dbfinaid` (anum, first, last, why, comments) VALUES …
Run Code Online (Sandbox Code Playgroud)

php mysql sql sql-injection prepared-statement

6
推荐指数
2
解决办法
2010
查看次数

登录授权,如何检查密码是否与SALT + HASH匹配 - PHP + MySQL

我目前正在开展一个学校项目,最近我在完成登录授权方面没有取得任何进展.我正在使用HASH和SALT注册新用户.我找不到任何能让我感到满意的资源,所以我决定在这里开个账户来问我自己的问题.

这是我的注册脚本:

    $username = $_POST['username'];
    $email = $_POST['email'];
    $first = $_POST['fname'];
    $last = $_POST['lname'];
    $salt = crypt("sha512", false);
    $pass = $_POST['password'];
    $password = hash("sha512", $salt . $pass . $salt, false);

$sql = "INSERT INTO `users` (`username`, `email`, `fname`, `lname`, `salt`, `password`) VALUES ('$username', '$email', '$first', '$last', '$salt', '$password')";
Run Code Online (Sandbox Code Playgroud)

然后我有一个checklogin.php脚本,它是我的索引页面上的action ="checklogin.php",这是登录页面.这是完整的脚本:http://pastebin.com/tKrsHaFU(粘贴垃圾箱)

我的问题是如何验证我的用户来到index.php页面(登录表单)与数据库中已有的用户请记住我有密码的盐和哈希.

php mysql hash login salt

4
推荐指数
1
解决办法
6568
查看次数

Codeigniter PDO模拟准备

我一直在阅读,人们说在设置与数据库的连接时应该添加

$dbConnection->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
Run Code Online (Sandbox Code Playgroud)

告诉PDO使用真正的PDO语句禁用模拟的预准备语句.

如何在Codeigniter中设置它?

我正在使用codeigniter 2.1.3

编辑1:

我现在如何连接:

$active_group = 'default';
$active_record = FALSE;

$db['default']['hostname'] = 'mysql:host=localhost';
$db['default']['username'] = 'XXXXXXX';
$db['default']['password'] = 'XXXXXXXXXX';
$db['default']['database'] = 'XXXXXXX';
$db['default']['dbdriver'] = 'pdo';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = FALSE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;
Run Code Online (Sandbox Code Playgroud)

一个查询示例是:

function validate_login()
    {
    $bcrypt = new Bcrypt(17);   
    $sql = "SELECT * FROM users WHERE username = :user";
    $loginQ = …
Run Code Online (Sandbox Code Playgroud)

php mysql pdo codeigniter prepared-statement

4
推荐指数
1
解决办法
1677
查看次数

$ _GET没有传递给SELECT查询

我有一个带有超链接的页面,就像这样:

预习

单击A0000000时,它会将您重定向到localhost/student.php?anum = A00000000

我已检查是否正在使用实际号码

$get = $_GET['anum'];
echo $get;
Run Code Online (Sandbox Code Playgroud)

这就是我得到的: 预习

我之前已经多次这样做但是改变的一件事是现在我使用内连接和WHERE子句来进行特定搜索.这个搜索必须做的是:

  1. 列出一个名为NOT NULL的学生
  2. 完成时= 1
  3. 并且anum或学生ID号码=使用$ _GET ['anum']的url anum

这是select语句:

$anum = filter_input(INPUT_GET, 'anum', FILTER_SANITIZE_STRING);
$anum = filter_var($anum, FILTER_SANITIZE_NUMBER_INT);

    try 
    {
    $query = $dbh->prepare("SELECT * FROM inoffice INNER JOIN comments ON 
                            inoffice.id = comments.id WHERE counselorname 
                            IS NOT NULL AND finished = '1' AND anum = :anum ");
    $query->bindParam(':anum', $anum);
    $query->execute();
    $result = $query->fetchall();
    }
        catch (PDOException $e) {
        error_log($e->getMessage());
        die($e->getMessage());
        }
Run Code Online (Sandbox Code Playgroud)

我只是通过放置anum = A0000000尝试相同的查询,它完美无缺.

但是当我尝试做上面的代码时,我得到一个空的echo'd表.

任何帮助都是极好的! - ty …

php mysql select pdo get

1
推荐指数
1
解决办法
280
查看次数

标签 统计

mysql ×5

php ×5

pdo ×3

prepared-statement ×2

select ×2

codeigniter ×1

get ×1

hash ×1

login ×1

salt ×1

sql ×1

sql-injection ×1