我在使用php脚本时遇到了问题,我创建该脚本是为了将实例插入数据库,但是我得到了一个微不足道的输出,我不知道如何修复它。代码是:
<?php
try{
$user = 'root';
$pass = null;
$pdo = new PDO('mysql:host=localhost; dbname=divebay', $user, $pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$username = $_POST['username'];
$password = sha1($_POST['password']);
$location = %_POST['location'];
$email = $_POST['email'];
$name = $_POST['fname'] . " " . $_POST['surname'];
$check = $pdo->prepare('SELECT * FROM user WHERE username=?');
$check->bindValue(1, $username);
$check->execute();
if($check->fetch(PDO::FETCH_OBJ)){
echo "Account name already exists";
}
else{
$stmt = $pdo->prepare('INSERT INTO user(username, password, location, email, name)
VALUES(:username, :password, :location, :email, :name)');
$stmt->bindParam(':username', $username, PDO::PARAM_STR);
$stmt->bindParam(':password', $password, PDO::PARAM_STR);
$stmt->bindParam(':location', $location, PDO::PARAM_STR);
$stmt->bindParam(':email', $email, PDO::PARAM_STR);
$stmt->bindParam(':name', $name, PDO::PARAM_STR);
if($stmt->execute()){
echo "Account created";
}
else{
echo "Account could not be created";
}
}
$pdo = null;
}catch(PDOException $e){
echo $e->getMessage();
}
?>
我希望输出类似于“accountcreated”。相反,我得到的输出是以下错误:
setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION)$用户名=$_POST['username']$password=sha1($_POST['password'])
$location=%\u POST['location']$email=$_POST['email']$name=$\u POST['fname']。" " . $_职位[姓氏]$支票=$pdo-
这个剧本出了什么问题导致了这个?
缺少<代码>
在%\u POST['location']
建议:我还强烈建议将PDO函数包装到一个类中。以下是我个人在每个项目中使用的内容:
将其保存到自己的文件(例如:sql.class.php)
<?php
class SqlIt{
public $Sql;
public $Response;
private $Host;
private $DBname;
private $User;
private $Pass;
public $NumResults;
public function __construct($Sql, $type, $vars){
if($vars == ""){
$vars = array();
}
try{
$DB = $this->db_connect();
$DB->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$STH = $DB->prepare($Sql);
$doit = $STH->execute($vars);
$this->Result = $doit;
}
catch(PDOException $e){
echo $e->getMessage();
}
//find function to run
switch($type){
case 'select':
$this->select($STH);
break;
}
}
public function select($query){
$rows = $query->rowCount();
$this->NumResults = $rows;
while($row = $query->fetchObject()){
$this->Response[] = $row;
}
}
//create a separate function for connecting to DB. Private to only this class.
private function db_connect(){
$this->User = 'root';
$this->Pass = '';
$DBH = new PDO("mysql:host=localhost;dbname=divebaby", $this->User, $this->Pass);
return $DBH;
}
}
?>
然后,要实际运行放置在上面的语句,只需将以下代码右转即可:
$username = $_POST['username'];
$password = sha1($_POST['password']);
$location = $_POST['location'];
$email = $_POST['email'];
$name = $_POST['fname'] . " " . $_POST['surname'];
$getUser = new SqlIt("SELECT * FROM user WHERE username=?","select",array($username));
if($getUser){
echo 'Account name already exists';
}else{
$insertUser = new SqlIt("INSERT INTO user (username,password,location,email,name) VALUES (?,?,?,?,?)","insert",array($username,$password,$location,$email,$name));
if($insertUser){
echo 'Account created!';
}else{
echo 'Account not created.';
}
获得该输出的唯一方法是编写以下内容:
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
作为:
$pdo?>setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
错误地
问题内容: 有什么办法可以在php中回显.html文件的全部内容? 例如,我有一些sample.html文件,我想回显该文件名,因此应显示其内容。 问题答案: 您应该使用: 这将读取文件,并通过一个命令将其发送到浏览器。这基本上与以下内容相同: 否则可能会导致大型文件崩溃,而事实并非如此。
对不起,英语不好。。 我有这样的php文件: 这是剧本: 现在当加载文件时。对于浏览器,脚本可以工作,但只执行wget和sed命令,cp不工作。。不复制文件!如果我手动运行脚本到终端(Debian 8),所有cmd都会执行。。。问题在哪里?谢谢约勒
问题内容: 关闭。 此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Stack Overflow 的主题。 5年前关闭。 我有来自数据库的数据行,我想有一个带有简单分页的表,最简单的方法是什么? 如果有人可以提供,我会很高兴。 问题答案: 这是HTML和代码的混合,但是非常基础,易于理解,并且解耦起来也很简单,可以满足您的需求。
问题内容: 我有一排如下所示的php代码: 我想知道如何为文本正确添加字体颜色。如果我这样做: “ red”一词为黑色,编译器将引发错误。 如果我在红色周围使用单引号,则文本根本不会显示。 任何帮助都会很棒。谢谢 问题答案: 您需要转义,因此它不会被解释为字符串的结尾。使用逃脱它:
我有一个php网站,它必须以分页格式在页面上显示项目列表,我使用php实现了这一点,但现在我想在其中添加ajax功能,所以我添加了这个函数,在分页部分单击page no时调用。Ajax/jQuery函数:(.paginate是页面链接的类) 我的分页功能有点像这样: 在我想要显示分页的div的页面上,我得到的是整个页面作为响应,而不是分页的div。我已经将分页的div分离到一个单独的页面,并将其包
问题内容: 我想从PHP脚本返回JSON。 我只是回应结果吗?我必须设置标题吗? 问题答案: 通常,没有它会没事,但是您可以并且应该设置Content-Type标头: 如果不使用特定的框架,通常会允许一些请求参数来修改输出行为。通常,为了快速进行故障排除,不发送标头,或者有时将数据有效载荷print_r盯着它很有用(尽管在大多数情况下,它不是必需的)。