一对PHP / MySQL问题

时间:2010-04-23 02:35:26

标签: php mysql

我是一名大学生,参加php和mysql编程课程,我的第一个问题是关于以下代码中的“$ variable”变量:

<?php ob_start(); ?>

<?php

session_start();

if ($_SESSION['auth'] != "true")
{ header("Location: login.php");
  exit;
}

$uid = $_SESSION['user'];

$connection = mysql_connect("localhost", "username", "password");

mysql_select_db("username", $connection);

$result = mysql_query ( "SELECT * FROM users where user_id = '$uid'", 
$connection);

$num = mysql_numrows($result);

$i=0;
while ($i < $num) {
$f1=mysql_result($result,$i,"firstname");
$f2=mysql_result($result,$i,"lastname");
?>

<html><body>
<p>
<td><center><font size = "18" face="Arial"><?php echo "Name: $f1 "; echo $f2; ?> </font></center></td>
</p>
</body></html>

<?php
$i++;
}
?>


<?php

$result1 = mysql_query ( "SELECT * FROM phone where user_id = '$uid'", $connection);

$num1 = mysql_numrows($result1);

$j=0;
while ($j < $num1) {
$f3=mysql_result($result1,$j,"type");
$f4=mysql_result($result1,$j,"number");
?>

<html><body>
<p>
<br>
<td><center><font size = "12" face="Arial"><?php echo "$f5: "; echo "($f3) "; echo "$f4 <br />"; ?> </font></center></td>
</p>
</body></html>

<?php
$j++;
}
?>

<?php

$result2 = mysql_query ( "SELECT * FROM address where user_id = '$uid'", $connection);

$num2 = mysql_numrows($result2);

$h=0;
while ($h < $num2) {
$f6=mysql_result($result2,$h,"type");
$f7=mysql_result($result2,$h,"address");
$f8=mysql_result($result2,$h,"city");
$f9=mysql_result($result2,$h,"state");
$f10=mysql_result($result2,$h,"zip");
?>

<html><body>
<p>
<br>
<td><center><font size = "12" face="Arial"><?php echo "$f10 Address: $f6, $f7, $f8 $f9"; ?></font></center></td>
</p>
</body></html>

<?php
$h++;
}
?>

<?php

include 'navbar.php';

ob_end_flush();

?>

我根本不理解$变量。它们是用户生成的还是数据库中的实体?代码如何知道哪个$结果是哪个?

我的第二个问题是,如果这是我班级代码中的其他人,我想修改它以使其成为我自己的并替换我自己的变量,我将如何去做呢?如果$变量不是用户定义的,那么它们是否需要更改?如果是,如何?如果这些是愚蠢的问题,我道歉,但我是这种编程语言的初学者。在此先感谢您的帮助。

-Jeff

3 个答案:

答案 0 :(得分:0)

在PHP中,您不需要定义变量,也不需要定义var类型。这意味着变量声明隐含在任何新的赋值中。 PHP用来理解它是变量的$符号。

一个例子:

$result = mysql_query ( "SELECT * FROM users where user_id = '$uid'", $connection);

使用这一行你基本上可以做三件事:

  1. 定义一个名为$ result
  2. 的新变量
  3. 根据此情况下的result type of your function资源
  4. 设置变量类型
  5. 将函数的结果分配给变量。
  6. 您可以在php.net上了解有关PHP variablestypes的更多信息,您可能会对此感兴趣,还可以阅读有关===运算符的更多信息

    下次,您可以在帖子中使用代码标签吗? :)

答案 1 :(得分:0)

  

基本上,我只需要知道一个。)哪些$变量是代码的一部分,哪些$变量是数据库的实体,前面有美元符号

答案是所有变量都是代码的一部分。没有“前面有美元符号的数据库实体”这样的东西。

变量所拥有的可能具有不同的含义和不同的来源。要了解每个变量的用途,您必须阅读并理解代码。有时变量用于多个目的。围绕变量的一些约定可以帮助您识别变量的用途。

$num = mysql_numrows($result);   // obviously holds the total number of rows
$i = 0;   // may be obscure, but "i" is often used as a counter in loops

while ($i < $num) {

    // very bad names for variables,
    // but it's pretty obvious what kind of value they hold here.
    $f1 = mysql_result($result, $i, "firstname");  // notice your friend $i again
    $f2 = mysql_result($result, $i, "lastname");

    // $firstname and $lastname would have been better names and
    // and would make the rest of the code easier to understand.

    ...

    $i++;  // yup, it's a loop counter after all
}

良好的变量命名在使代码可读并避免像您拥有的问题方面有很长的路要走。您将无法轻易地“替换”变量,它们都是整个算法的一部分,每个都在程序中占有一席之地。虽然有些是程序结构的“不可或缺”,如循环计数器,而其他“仅保持数据”,但两者都是必需的。应用程序中的某个点需要包含数据的变量,例如echo时。同样,循环计数器也是必要的。

只有正确的命名可以帮助您在不同的变量使用之间进行区分。早期习惯明确的命名约定,不要害怕冗长。 $customerFirstName是一个很好的变量名,$f2在这种情况下不是。 $i适用于循环,$num可能会更好$totalRows

答案 2 :(得分:0)

我建议你学习一些简单的php教程,f.ex。 {3}在w3schools.com。当我开始学习php时,这对我非常有帮助。在半小时内你可以学到很多东西,你就能理解你的伴侣的代码。