我有一个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
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) 我目前正在开展一个学校项目,最近我在完成登录授权方面没有取得任何进展.我正在使用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页面(登录表单)与数据库中已有的用户请记住我有密码的盐和哈希.
我一直在阅读,人们说在设置与数据库的连接时应该添加
$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) 我有一个带有超链接的页面,就像这样:

单击A0000000时,它会将您重定向到localhost/student.php?anum = A00000000
我已检查是否正在使用实际号码
$get = $_GET['anum'];
echo $get;
Run Code Online (Sandbox Code Playgroud)
这就是我得到的: 
我之前已经多次这样做但是改变的一件事是现在我使用内连接和WHERE子句来进行特定搜索.这个搜索必须做的是:
这是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 …