2012-07-25 30 views
0

这是基本的,因为它让男人和女孩。不能在mysql_query()中使用变量?

我有一个非常简单的脚本,不会工作。我调用数据库并测试它的连接,我做一个查询,存储结果并打印结果。

问题是我似乎无法在我的SQL语句中使用任何变量。

下面的代码:

<?php 

    $rest_name = $_GET['rest_name']; // outputs 'Starbucks' 

    $test = mysql_query("SELECT code_id FROM table_code WHERE restaurant = '$rest_name'"); 

    /* I've also tried these as well 
    $test = mysql_query("SELECT code_id FROM table_code WHERE restaurant = '".$rest_name."'"); 
    */ 

    $mark = mysql_result($test,0); 

    echo $_GET['rest_name'].$mark; 
?> 

我呼应了查询,它看起来很好,并在数据库中运行的罚款。 $ rest_name变量回声很好。 $ _GET ['rest_name']回波很好。我对此感到迷茫和困惑。

+4

当你尝试时会发生什么?你有错误吗?一点都没有? – andrewsi 2012-07-25 18:50:22

+14

欢迎来到Stack Overflow!请不要将'mysql_ *'函数用于新代码。他们不再被维护,社区已经开始[弃用流程](http://goo.gl/KJveJ)。请参阅[**红框**](http://goo.gl/GPmFd)?相反,您应该了解[准备好的语句](http://goo.gl/vn8zQ)并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli的)。如果你不能决定,[本文](http://goo.gl/3gqF9)将有助于选择。如果你关心学习,[这里是很好的PDO教程](http://goo.gl/vFWnC)。 – 2012-07-25 18:51:14

+1

另外,在尝试查询它之前,您**正在连接到数据库,对吗? – 2012-07-25 18:52:23

回答

1

1 - 您可以从此开始。

$test = mysql_query("S....") or die(mysql_error()); 

这样你就会看到你得到了什么错误。

2 - 你可能要避免使用由用户在查询中提供一个可变

$rest_name = mysql_real_escape_string($_GET['rest_name']); 

否则用户可以插入他们自己的SQL命令;

3 - mysql_xxx函数已被弃用,您可能想研究pdo或mysqli以查看新方法的工作方式。

+2

你可能也不想使用'mysql_ *':) – 2012-07-25 18:53:02

+0

我这样做了,没有错误可以起来。它放置了一个随机值来替换变量,我得到了一个很好的结果。 – user1552364 2012-07-25 20:02:25

0

确认您拥有由msyql_query返回一个有效的结果集

$test = mysql_query("SELECT ... "); 
if (!$test) { 
    die(mysql_error()); 
} 

(这是可能的,你没有连接到MySQL实例,你是在错误的数据库,你连接的没有按用户”没有权限等)

检查结果集,然后再使用它。


注:不要使用mysql_函数,使用库MySQLi或PDO来代替。

+0

甚至不应该讨论'mysql_query'函数。它应该适用于传统应用*仅*。 – tadman 2012-07-25 19:12:30