尽管使用了许多网站的建议,但SQL中的变量无法识别

时间:2013-08-16 01:25:12

标签: php mysql sql

我对HTML和CSS的了解非常好,但是对于PHP / SQL我直到上周才知道〜(开发了多个HTML / CSS专用网站)总结:聘请经验丰富开发网站以前的商业合作伙伴(我信任这个家伙!)...网站一开始看起来很棒(我看了好几次,但从来没有几个小时)......我付了我的前合作伙伴的工作...... 。最近有时间真正真正仔细检查网站几个小时....发现了很多错误....合作伙伴没有回应我的帮助请求....我必须学习PHP自己修复这些错误: )

以下是其中一个问题:我需要从一个名为“stats”的SQL数据库中检索一个值(来自所有用户都拥有的变量“财富”),以确定对于任何给定用户,财富'是(< 1)或(> = 1),但我似乎无法检索此值。如果财富< 1,执行 X ,但如果财富> = 1,请执行 Y 。一切正常,除了 Y 执行任何财富价值(包括0和负数)。我试图通过声明一个全局变量$ stats9999(我也尝试过这个本地变量)来解决这个问题,它从SQL数据库中获取值,但这就是问题的起点。这是php代码:

<?php session_start();

if ((($_SESSION['role']) != SHA1('user')) && (($_SESSION['status']) != SHA1('active')))       
{
header( 'Location: index.php' ) ;
session_destroy();
 } else 
include 'connect.php' ; //Connects to SQL database just fine

$_SESSION['fname'];
$_SESSION['login_id'];
$_SESSION['user'];

$stats9999=mysql_fetch_assoc(mysql_query("SELECT wealth FROM stats WHERE login_id = '"     
. mysql_real_escape_string($_SESSION['login_id']) . "'")); //Global $stats9999

if {.....} //Several if...else if statements in a row but no problems here as far as I 
//can tell, one of the problems is in next series of lines of code


else if  ((($_POST['hidden'] ) == 'Function') && (($stats9999) == 0)) {

    $message = 'Text1';

echo "<SCRIPT>
alert('$message');
location = 'profile.php';
</SCRIPT>"; 


            }

else if  ((($_POST['hidden'] ) == 'Function') && (($stats9999) != 0)) {

    $message = 'Text2';

echo "<SCRIPT>
alert('$message');
location = 'profile.php';
</SCRIPT>"; 


            }

如果我不尝试通过$ stats9999来计算“财富”,浏览器会成功识别“功能”,并且网站的行为也会相应。但是,问题是$ stats9999似乎没有得到承认。我假设浏览器不知道“看到/识别”我在代码开头附近查询的SQL数据库和/或数据库条目和/或没有检索(“获取”)我想要的条目(我'我确定由于我的代码中的错误)。作为实验,我用($ _SESSION ['user']!=“”)和($ _SESSION ['user'] ==“”)替换了($ stats9999!= 0)和($ stats9999 == 0) 。代码“看到/识别”这些$ _SESSION值为不等于“”的字符串,并且网站以适当的方式运行。这加强了我的信念,“统计数据”数据库中的具体条目没有被“看到/认可”。

我还测试了$ stats9999,试图在警告框中回应'$ stats9999'(加上这个名字的变体,想知道这是否有所不同,但我认为没有),但是在许多变化中都有各种不必要的结果,包括(a)页面崩溃(b)空白警报框(c)资源ID#2。使用上面编写的代码,网站崩溃了。

我非常感谢任何帮助,并乐意澄清我所做的任何令人困惑的陈述....谢谢!!

1 个答案:

答案 0 :(得分:0)

mysql_fetch_assoc返回一个关联数组,其中键是select查询中的列名。您正在尝试使用$stats9999,就好像它是包含该列的标量变量一样。你需要写:

$wealth = $stats9999['wealth'];

然后您可以在$wealth语句中使用if