为什么这个PHP代码不起作用?

时间:2011-10-29 02:25:08

标签: php mysql

我有一个包含一些信息的数据库。 (电子邮件地址和姓名)

我有一个表单可以输入电子邮件,我想打印出属于这封电子邮件的名称。

$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

感谢

4 个答案:

答案 0 :(得分:5)

阅读mysql_fetch_assoc

的手册
  

返回与获取的行对应的字符串关联数组。

获取您需要编写的数据$foo['name'];

答案 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'] ; 
}