0

我想显示名字、姓氏和县,但是当我尝试在此处连接 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(): last_name.county not found in MySQL result index 5 in C:\xampp\htdocs\ajax_Contact\name.php on line 14

4

3 回答 3

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();
于 2013-06-17T21:13:11.537 回答
-1

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

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

于 2013-06-17T21:19:06.800 回答
-2

首先,不要使用 mysql_*() 库。它已被弃用和过时。但是如果你必须使用它,那么不要使用 mysql_result。这是低效的。更好的过程是使用 fetch 函数获取整行

$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'];
}
于 2013-06-17T21:01:59.950 回答