2013-03-05 79 views
0

我正在运行本地apache服务器和mysql服务器。我的本地网站工作正常。mysql查询需要引号变量

当我将我的网站上传到ipage(主机)并将数据库导入到他们的mysql服务器时,我能够连接到数据库,但查询返回null。

我检查了上传的数据库,我能看到的唯一区别是本地的类型是innodb,但不知怎的,ipage不支持innodb,现在类型变成了MyISam。

现在,我做了一些测试:

这是我的PHP代码:

$type = mysqli_real_escape_string($connection, $_GET['type']);      

$sq1 = "SELECT 
     course_id, 
     FROM 
      courses 
     WHERE 
     training_field LIKE '$type'" 

这个地方而不是工作的远程服务器上。现在,当我硬编码$类型。即

$sq1 = "SELECT 
     course_id, 
     FROM 
      courses 
     WHERE 
     training_field LIKE 'ENIGNEEING'" 

这种方法无处不在?

任何想法

+1

请停止与古mysql_ *函数编写新的代码。他们不再被维护,社区已经开始[弃用流程](http://news.php.net/php.internals/53799)。相反,您应该了解准备好的语句并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/mysqli)。如果你关心学习,[这里是一个很好的PDO相关教程](http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers)。 – Arjan 2013-03-05 06:48:12

+0

是的我你是正确的我只是将mysql_real_escape_string移植到mysqli_real_escape_string和所有其他查询到MySQLi。仍然是同一个问题 – Kam 2013-03-05 06:59:16

+0

@Kam - 为什么不把新代码(请附上它)发布到问题上。 – 2013-03-05 07:02:14

回答

0

试试这个

$sq1 = "SELECT 
    course_id, 
    FROM 
     courses 
    WHERE 
    training_field LIKE '".$type."'" 

PHP串联:)

+0

您可以使用echo $ sq1找到差异; – 2013-03-05 07:23:53

1
$type = mysql_real_escape_string($_REQUEST['type']);       

$sq1 = "SELECT course_id FROM courses WHERE training_field LIKE '$type'" 

试试这个

+2

有什么区别? – Kam 2013-03-05 06:58:25

+0

'$ _GET' vs'$ _REQUEST' – Arjan 2013-03-05 07:42:04