PHP- 尝试从SQL获取信息时出错


PHP- error when trying to get info from SQL

这段代码试图从一个名为R的表中获取信息,但我在第6行收到错误:

解析错误:语法错误、第 6 行get_R.php中意外T_LOGICAL_OR

我和我的几个同事都看过了,我们想不通。这是代码的副本:

<?php
function get_R( $s) {
(
$t = mysql_query ( $s) ) or die (mysql_error() );
if (mysql_num_rows($t) == 0) or die ("<br> No data in R<br>");

$out = "" ;
$out .=
    "<table style= '" color:red ; background:line; '" >";
/*................................*/
while ( $r = mysql_fetch_array($t) ) {
    /*.....................*/
};
    $out .= "....";
    return $out;
}
?>

有什么想法吗?

这一行没有意义:

if (mysql_num_rows($t) == 0) or die ("<br> No data in R<br>");

不能有 if(...) or ... 语句;它不是有效的语法。你想要这样做:

if (mysql_num_rows($t) == 0) {
    die ("<br> No data in R<br>");
}

或者,你可以做

mysql_num_rows($t) or die ("<br> No data in R<br>");

另外,请不要使用mysql_*;mysql_*函数已过时、已弃用且不安全。请改用MySQLiPDO

你应该使用

ifor ,你不应该同时使用两者。

这是通常的编写方式:

if (mysql_num_rows($t) == 0) {
    die("<br> No data in R<br>");
}

但您可以使用:

mysql_num_rows($t) != 0 or die("<br> No data in R<br>");

注意我不得不将比较从==更改为!=,因为当第一个表达式失败时or执行下一个表达式。我也可以改or改成and

or die通常仅在执行赋值或调用函数时使用,并且您希望在失败时退出。当您测试像这样一个简单的条件时,通常不会使用它。

你有if (condition) or die(..)这是怎么回事?

要么

使用condition or die(..),要么使用if (condition) { .. } else { .. }不要尝试组合这两种语法。

测试此代码:

<?php
function get_R( $s) {
$t = mysql_query ( $s) or die (mysql_error() );
if (mysql_num_rows($t) == 0) die ("<br> No data in R<br>");

$out = "" ;
$out .=
    "<table style= '" color:red ; background:line; '" >";
/*................................*/
while ( $r = mysql_fetch_array($t) ) {
    /*.....................*/
};
    $out .= "....";
    return $out;
}
?>