在PHP中回显SQL字段


Echoing an SQL Field in PHP

我需要一些帮助与回显SQL字段,但它一直显示资源#4或不显示任何东西。

我的代码是
mysql_connect("$host", "$username", "$password") or die("cannot connect"); 
mysql_select_db("$db_name") or die("cannot select DB");
$myusername=$_POST['myusername']; 
session_register("myusername");
$result = mysql_query("SELECT statsight from playerinfo WHERE username = 'myusername'") or die(mysql_error());
$row = mysql_fetch_array($result);
if(!session_is_registered('myusername')){
    header("location:mainlogin.php");
}
echo $row['statsight'];
?>
<html>
    <body>
        Login Successful
        <form name="form2" method="post" action="stat.php">
           Stat1: <?php echo "<td>".$row['statsight']."<td>"?>
           <input type="submit" value="+">
       </form>
    </body>
</html>

它没有显示任何东西。仅显示Stat1:+按钮。

数据库中statsight的值为3,myusername信息来自表格。

使用

session_start();
$myusername=$_SESSION['myusername'];
username = 'myusername'

这里没有使用变量

我不是PHP专家,但这可能是正确的方法

mysql_query("SELECT statsight from playerinfo WHERE username = ' ". $myusername."'")            or die(mysql_error());

虽然这不是一种正确的方式,但在执行查询时应该使用Prepared语句的机制。

您需要使用mysql_fetch_assoc而不是mysql_fetch_array,以便您的字段名称作为键带入数组$row['statsight']

你必须在这里输入$ '$myusername'

$result = mysql_query("SELECT statsight from playerinfo WHERE username = '$myusername'") or die(mysql_error());

不再推荐使用mysql扩展名。现在我们打算使用mysqli。虽然mysqli支持预处理语句,但对于像您这样的简单选择来说,它们不是必需的。使用PHP函数mysqli_real_escape_string()应该就足够了。对于插入查询,需要额外的安全性。

会话使用的方法是完全不赞成的。我的示例代码中显示了正确的方法。我认为你的推荐信太过时了,这是你麻烦的根源。我建议花点时间阅读最新的PHP官方手册。

有几个函数可以用来处理返回结果集的查询结果。下面是

的部分清单
mixed mysqli_result::fetch_array ( [ int $resulttype = MYSQLI_BOTH ] ) 
// allows you to retrieve an array with numeric keys, an associative array or both
array mysqli_result::fetch_assoc ( void )
// returns an associative array of the current row
object mysqli_result::fetch_object ([ string $class_name [, array $params ]] )
// returns the current row as an object

Mysqli可以以面向对象(OO)或过程的方式使用。现在大多数程序都使用OO风格。下面是一个示例(使用OO风格)。

$mysqli = new mysqli( $host, $username, $password, $dbname );
if ($mysqli->connect_errno) 
{
    printf( "Connect failed: %s'n", $mysqli->connect_error );
    exit();
} 
$_SESSION[ 'myusername' ] = $_POST[ 'myusername' ]; 
$result = $mysqli->query
    ( "SELECT statsight from playerinfo WHERE username = '".
    $mysqli->real_escape_string('myusername' )."'";
$data_array = $result->fetch_assoc();  
//$result is a mysqli_result object. 
//$data_array is an array of field_name=>value pairs.
if( !isset( $_SESSION[ 'myusername' ])) header( "location:mainlogin.php" );
echo $data_array[ 'statsight' ];
$mysqli->close();
$result->free();
?>
<html>
<body>
    Login Successful
    <form name="form2" method="post" action="stat.php">
       Stat1: <?php echo "<td>".$data_array[ 'statsight' ]."<td>"?>
       <input type="submit" value="+">
    </form>
</body>
</html>