在PHP中回显SQL字段

时间:2011-11-14 07:19:44

标签: php mysql sql

我需要一些帮助来回显一个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'];

4 个答案:

答案 0 :(得分:1)

username = 'myusername'

你不是在这里起诉变量。

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

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

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

答案 1 :(得分:0)

您需要使用mysql_fetch_assoc代替mysql_fetch_array以便将您的字段名称作为键$row['statsight']

带入数组

答案 2 :(得分:0)

你必须在这里加'$ myusername'

$ result = mysql_query(“从playerinfo WHERE username ='$ myusername'”中选择statsight)或者死(mysql_error());

答案 3 :(得分:0)

不推荐使用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>