使用PHP将MySQL语句转换为多个PHP变量

使用PHP将MySQL语句转换为多个PHP变量,php,mysql,pdo,Php,Mysql,Pdo,我要完成的事情的一个小背景 我正在制作一个简单的CMS/博客,并试图通过用户名选择数据库的firstname/lastname值来自动创建签名。。 然后在选择它们之后,我试图将它们放入一个变量中 例如: $firstname = row['firstname']; $lastname = row['lastname']; $signature = $firstname + " " + $lastname; echo 'Created by: ' . $signature; 以上是我在精神上

我要完成的事情的一个小背景

我正在制作一个简单的CMS/博客,并试图通过用户名选择数据库的firstname/lastname值来自动创建签名。。 然后在选择它们之后,我试图将它们放入一个变量中

例如:

$firstname = row['firstname'];
$lastname = row['lastname'];

$signature = $firstname + " " + $lastname; 
echo 'Created by: ' . $signature;
以上是我在精神上努力实现的目标,但我似乎无法做到这一点。这就是我目前所拥有的,我没有任何运气

$username = $_SESSION['username'];

 $sqlName = "SELECT * FROM users WHERE username = $username";
 $connName->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$resultName = $connName->query($sqlName);

 foreach ($resultName as $row) {
    $firstname = $rowN['firstname'];
    $lastname = $rowName['lastname'];
}
这是我为那些想知道的人准备的最新版本:

   $username = $_SESSION['username'];
$connName = new PDO('mysql:host=localhost;dbname=platform', 'tyler', 'H011mann');
 $connName->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

 $sqlName = "SELECT * FROM users WHERE username = $username";


$resultName = $connName->query($sqlName);
$name = 'Created by : ';
foreach ($resultName as $row) {
    $name .= $row['firstname'] . ' ' . $row['lastname'];
}
echo '<div>' . $name. '</div>';
$username=$\u会话['username'];
$connName=newpdo('mysql:host=localhost;dbname=platform','tyler','H011mann');
$connName->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_异常);
$sqlName=“从用户名为$username的用户中选择*”;
$resultName=$connName->query($sqlName);
$name='创建人:';
foreach($resultName作为$row){
$name.=$row['firstname'.'。$row['lastname'];
}
回显“”$名字;
试试这个

$resultName=$connName->query($sqlName);
$signature='创建人:';
foreach($resultName作为$row){
$signature.=$row['firstname'.'。$row['lastname'];
}
echo$签名;

除非上面的示例代码只是某种形式的伪代码,否则PHP中的串联运算符是“.”,而不是“+”。只需使用它将返回的2个值组合成一个变量:

$firstname = $row['firstname'];
$lastname = $row['lastname'];
$signature = $firstname . ' ' . $lastname;

您的代码有一些问题。乍一看,我错过了PDO对象。仔细检查,我注意到您使用了错误的连接运算符,而且您似乎也没有使用准备好的语句

准备好的语句将保护您免受SQL注入以及用户使用可能导致MySQL数据库问题的字符的影响。我已经为您编写了以下代码,可以处理您的所有问题。请务必查看以下评论:

<?php
session_start();

//Get Username
$username = $_SESSION['username'];

//MySQL Server Data
$dbhost = "";
$dbname = "";
$dbuser = "";
$dbpass = "";

//PDO Object
$dsn = 'mysql:host=' . $dbhost . ';dbname=' . $dbname;
// Set PDO options
$options = array(
    PDO::ATTR_PERSISTENT    => true,
    PDO::ATTR_ERRMODE       => PDO::ERRMODE_EXCEPTION
);
// Create a new PDO instance
try{
    $pdo = new PDO($dsn, $dbuser, $dbpass, $options);
}
// Catch any errors
catch(PDOException $e){
    print $e->getMessage();
    exit;
}

try {
    //Setup Query
    $sql = "SELECT * FROM users WHERE username = :username";

    //Prepare Query
    $pdo->prepare($sql);

    //Bind Values (to prevent SQL injection)
    $pdo->bindParam(':username', $username);

    //Execute Query
    $pdo->execute();

    //Fetch Data
    $data = $pdo->fetch(PDO::FETCH_ASSOC);

    //Combine results
    $signature = $data['firstname']. " " .$data['lastname'];
    echo $signature;
} catch (PDOException $e) {
    print $e->getMessage();
    exit;
}

?>


我缺少了创建pdo对象的部分?@icecub现在我知道我把事情搞砸了。我使用了一个全局db文件,它使用了一个不同的pdo名称。谢谢,没问题。我已经在为您准备一个更好的答案,因为您还有一些其他问题;)@icecub我已经更新了问题中的代码,仍然遇到问题,现在没有发布。。尽管用户名/密码正确..:|如果他一开始连一个pdo对象都不创建,那就行不通了。。他所做的只是设置一些pdo属性,并期望它神奇地成为一个实际对象。没错,但这似乎不是他的问题,因为他没有显示任何关于它的信息。他只是在问串接字符串的问题。但是,是的,你是对的。@EricMartinez两者都有一点,我不确定这是否是连接,这是我的主要问题,因为它甚至没有在变量中选择名字/姓氏。。我已经在上面发布了我的更新代码,谢谢!:)这只是一种形式的伪,我在从数据库获取文件并将值插入变量firstname和lastname时遇到了问题,谢谢!正在获取空白页..:(填写用户dbnameetc@TylerH当然可以:P它只是简单地设置
$signature
。它还没有做任何事情。如果你想看到结果,请在下面添加
echo$signature;
。等等,我会更新代码。@TylerH,现在就试试。我做了。我在顶部声明了一个变量,并在每秒钟测试一次回显直到我到达try语句try{$pdo=new pdo($dsn,$dbuser,$dbpass,$options);}你得到了我的+1,因为它通过使用准备好的语句来显示正确的pdo实践。回答得好!
<?php
session_start();

//Get Username
$username = $_SESSION['username'];

//MySQL Server Data
$dbhost = "";
$dbname = "";
$dbuser = "";
$dbpass = "";

//PDO Object
$dsn = 'mysql:host=' . $dbhost . ';dbname=' . $dbname;
// Set PDO options
$options = array(
    PDO::ATTR_PERSISTENT    => true,
    PDO::ATTR_ERRMODE       => PDO::ERRMODE_EXCEPTION
);
// Create a new PDO instance
try{
    $pdo = new PDO($dsn, $dbuser, $dbpass, $options);
}
// Catch any errors
catch(PDOException $e){
    print $e->getMessage();
    exit;
}

try {
    //Setup Query
    $sql = "SELECT * FROM users WHERE username = :username";

    //Prepare Query
    $pdo->prepare($sql);

    //Bind Values (to prevent SQL injection)
    $pdo->bindParam(':username', $username);

    //Execute Query
    $pdo->execute();

    //Fetch Data
    $data = $pdo->fetch(PDO::FETCH_ASSOC);

    //Combine results
    $signature = $data['firstname']. " " .$data['lastname'];
    echo $signature;
} catch (PDOException $e) {
    print $e->getMessage();
    exit;
}

?>