2016-09-26 51 views
-2

我希望在mysql中使用'mysql'db不会影响任何东西(我真的不记得是否是错误或不)如果是这样的话,我将不得不完全重新执行这个网站的mysql部分(我不知道它是否保留给其他东西)。我在这里尝试做两件事,1)通过用户名表验证登录信息,以及2)如果登录信息有效,则创建列表。我原本有两个PHP文件,但我试图尽可能简化这个;我在登录网站时看到的一些例子太复杂了,我需要的仅仅是验证登录细节的机制,并且创建一个列表......这不是一个网络站点或任何东西。此外,在IDE中,我使用它提到不使用$ query两次,但改变它似乎没有什么差别。我不是太熟悉PDO如何::获取()的作品(或PHP一般),但是这是怎么了我已经实现了它:PHP - 没有文本的空错误警报,没有错误日志条目-PDO获取()

<?php 
header('Content-Type: application/json'); 

error_reporting(E_ALL); 
ini_set('display_errors', 1); 


$uname = filter_input(INPUT_POST, 'uname'); 
$upassword = filter_input(INPUT_POST, 'upassword'); 
$name = filter_input(INPUT_POST, 'name'); 
$description = filter_input(INPUT_POST, 'description'); 

$createlisting = ''; 
$hello = array(); 


if(!empty($uname && $upassword && $name && $description)) { 

$conn = new PDO('mysql:host=127.0.0.1;dbname=mysql', 'root', "password"); 
$conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$query = 'SELECT `uname`,`upassword` FROM `usernames` WHERE `uname` = :uname'; 
$stmt = $conn->prepare($query); 
$stmt->bindParam(":uname",$uname, PDO::PARAM_STR, strlen($uname)); 
$stmt->execute(); 

$hello = $stmt->fetch(PDO::FETCH_ASSOC); 
$upasswordhash = password_hash($upassword, PASSWORD_DEFAULT); 
$loginarray = array($uname, $upasswordhash); 
$loginarray1 = array($hello['uname'], $hello['upassword']); 


if ($loginarray === $loginarray1){ 


     $query = "INSERT INTO user_meta (name, description) VALUES (:name, :description)"; 
     $stmt = $conn->prepare($query); 

     $query->bindParam(":name",$name, PDO::PARAM_STR, strlen($name)); 

     $query->bindParam(":description",$description, PDO::PARAM_STR, strlen($description)); 
     $query->execute(); 
     echo json_encode("Your listing has been created. Please use the search function to see it."); 

     $conn = null; 
     $query = null; 
//closes the MySQL connection. 
} else { 
echo json_encode("Listing failed."); 
} 
} 
+0

什么问题呢? – Ghost

+0

我没有尝试,但“如果(!空行”似乎很奇怪,你应该单独检查每个变量我认为 – user489872

+0

基本上这只返回一个空白警报框,我敢肯定这是我使用PDO :: fectch ),当我完成后,我会发布解决方案。谢谢 – somedude

回答

-2

尝试阵列值进行比较,而不是使用==操作符。

pdo返回一个关联数组,但是您在tryout $ hello数组上使用数字索引。

从这个问题: https://stackoverflow.com/a/5678990

$arraysAreEqual = ($a == $b); // TRUE if $a and $b have the same key/value pairs. 
$arraysAreEqual = ($a === $b); // TRUE if $a and $b have the same key/value pairs in the same order and of the same types. 
+0

作出改变,我想去与重复,谢谢。 – somedude

相关问题