连接具有mysql_result的echo语句

时间:2013-06-17 20:59:14

标签: php mysql

我想获得要显示的名字,姓氏和县,但是当我尝试在此处连接echo语句时,我收到错误。我怎么能纠正这个?
        

$query = mysql_query("
SELECT `first_name`, `last_name`,`county`
FROM  `contact`
WHERE `first_name` ='". mysql_real_escape_string(trim($_POST['name'])) ."'

");
  echo (mysql_num_rows($query) !== 0)? mysql_result($query,0,'first_name'):'Name not found';
?>

这是我收到的消息:

  

警告:mysql_result():在第14行的C:\ xampp \ htdocs \ ajax_Contact \ name.php中的MySQL结果索引5中找不到last_name.county

3 个答案:

答案 0 :(得分:2)

此代码应回答OP关于其当前代码的问题:

$query = mysql_query("
SELECT `first_name`, `last_name`,`county`
FROM  `contact`
WHERE `first_name` ='". mysql_real_escape_string(trim($_POST['name'])) ."'

");
  (mysql_num_rows($query) !== 0) ? print mysql_result($query,0,'first_name') : print 'Name not found';
?>

另外根据您的错误,请确保此行:

`last_name`,`county`

目前不是

`last_name`.`county`

注意逗号/句点差异。

或者,如果您要显示名字,姓氏和县,请使用:

$query = mysql_query("
SELECT `first_name`, `last_name`,`county`
FROM  `contact`
WHERE `first_name` ='". mysql_real_escape_string(trim($_POST['name'])) ."'

");
  (mysql_num_rows($query) !== 0) ? print mysql_result($query,0,'first_name')." ".mysql_result($query,0,'last_name')." ".mysql_result($query,0,'county') : print 'Name not found';
?> 

最终是为了获得更好的性能和支持的代码使用

$mysqli = new mysqli("your_host", "your_user", "your_password", "your_database");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query = "
SELECT `first_name`, `last_name`,`county`
FROM  `contact`
WHERE `first_name` ='". mysql_real_escape_string(trim($_POST['name'])) ."'

";
$result = $mysqli->query($query);

while($row = $result->fetch_array()){
    $rows[] = $row;
}

if($result->num_rows === 0){
    print 'Name not found';
}

foreach($rows as $row){
    print $row['first_name']." ".$row['last_name']." ".$row['county'];
}

/* free result set */
$result->close();

/* close connection */
$mysqli->close();

答案 1 :(得分:-1)

你最简单的方法是使用更新版本的MySQL函数 - mysqli是一个非常好的版本。但是如果你必须依赖旧的功能集,那么请阅读文档; mysql_result返回数据,你应该自己在代码中准备它。 另外,我必须同意@MarcB - 使用mysql_fetch_assoc或类似的东西,当oyu只是,并且真的期待一行。

但如果你有时间,合并到mysqli或PDO方法 - 它们更现代(换句话说它们一直是OOP)并且更安全。

答案 2 :(得分:-2)

首先,不要使用mysql _ *()库。它已被弃用且过时。但是如果你必须使用它,那么不要使用mysql_result。效率低下。更好的过程是使用获取函数

获取整行
$result = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_assoc($row);
if (mysql_num_rows($result) != 0) {
  echo $row['first_name'], $row['last_name'], $row['county'];
}