我有一个包含一些信息的数据库。 (电子邮件地址和姓名)
我有一个表单可以输入电子邮件,我想打印出属于这封电子邮件的名称。
$test = $_POST['mail']; //the html code works, $test prints out the email given.
$question = mysql_query("SELECT name FROM mydb WHERE email = '".$_POST['mail']."'")or die(mysql_error());
while($foo = mysql_fetch_assoc($question))
{
echo $test . " - ";
echo $foo;
}
为什么不打印出来作为名字?到目前为止,它出于某种原因打印出Array
。
感谢
答案 0 :(得分:5)
答案 1 :(得分:2)
请习惯占位符以避免注入攻击。 mysql_fetch_assoc()
和mysqli::fetch_assoc
是等价的,因为它们都返回一个关联数组;我只是发现面向对象的版本更清洁。
<?php
$stmt = $dbh->prepare("SELECT name FROM mydb WHERE email = ?");
if ($stmt->execute(array($_POST['mail']))) {
while ($row = $stmt->fetch_assoc()) {
echo $test . " - " . echo $foo['name'];
}
}
?>
答案 2 :(得分:1)
因为它是一个数组(由mysql_fetch_assoc()指示)(并且可能避免另一个应用程序可以对SQL注入进行修改)。您必须使用索引来访问单元格的值:
$foo['name']
答案 3 :(得分:0)
$test = mysql_real_escape_string($_POST['mail']);
$question = mysql_query("SELECT name, foo FROM mydb WHERE email = '$test'")or die(mysql_error());
while($foo = mysql_fetch_assoc($question)) {
echo $test = $foo['name'] ;
echo $foo = $foo['foo'] ;
}