2013-03-06 116 views
0

当我写死我这样的查询,查询返回正确的结果:MySQL查询不与PHP变量工作

$data = mysql_query("SELECT * FROM $table_name WHERE post_ID = '1'") or 
       die(mysql_error()); 

但是当我使用这样的PHP变量,查询不返回任何结果:

$data = mysql_query("SELECT * FROM $table_name WHERE post_ID = '$ID'") or 
       die(mysql_error()); 

我已经初始化的变量上面如下:

$ID = $_POST[ID]; 

和可变屡试不爽有这样的说法:

$sql = "INSERT INTO $table_name (post_ID, user_name, comments) 
    VALUES ('$ID','$name', '$comment')"; 

所以我不明白为什么变量将正确地插入到我与以前的声明SQL表,但不与查询工作。我在sql_table中为post_ID字段使用了一个varchar数据类型。

+2

[**请不要在新代码**中使用'mysql_ *'函数](http://bit.ly/phpmsql)。他们不再被维护[并且被正式弃用](http://j.mp/XqV7Lp)。看到[**红框**](http://j.mp/Te9zIL)?学习[*准备的语句*](http://j.mp/T9hLWi),并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [这篇文章](http://j.mp/QEx8IB)将帮助你决定哪个。如果你选择PDO,[这里是一个很好的教程](http://j.mp/PoWehJ)。 – 2013-03-06 05:46:55

+1

它应该是'$ ID = $ _POST ['ID'];'不.. ..? – MatRt 2013-03-06 05:47:22

+0

$ _POST [ID];仍然认为它是一个字符串,提供的ID没有被定义为一个常量。 (请注意它会引发警告级别的错误)所以不一定,但你可能是正确的。 – Mechzeit 2013-03-06 05:49:05

回答

0

试试这个

$ID = $_POST['ID']; 
$data = mysql_query("SELECT * FROM ".$table_name." WHERE post_ID = '".$ID."'") or 
     die(mysql_error()); 
+0

没有工作 – user2138541 2013-03-06 06:02:07

+0

可以确保您的$ _ POST [“ID”]不为空或返回一个有效的价值? – 2013-03-06 06:10:27

+0

的$ _ POST [ID]时返回适当的值到SQL表 – user2138541 2013-03-06 06:35:35

0

能不能请你,而不是直接报价

$data = mysql_query("SELECT * FROM $table_name WHERE post_ID =$ID") or 
       die(mysql_error()); 
+0

这将导致一个错误:你在你的SQL语法错误;检查对应于你的MySQL服务器版本使用附近的“”在1号线 – user2138541 2013-03-06 06:06:01

+1

请打印$ ID的值正确的语法手册是有它的任何值或不 – 2013-03-06 06:07:44

+0

没有什么是打印的,但正确的值被输入到我的sql表中。所以这没有任何意义。 – user2138541 2013-03-06 06:14:51

0

PHP解释器,如果你把它内“”不分析的变量。因此,尝试删除单引号,即使用的,而不是 '$ ID'

$data = mysql_query("SELECT * FROM $table_name WHERE post_ID = $ID") or die(mysql_error()); 
+0

这会导致错误 – user2138541 2013-03-06 06:05:21

+0

您的SQL语法有错误;检查与你的MySQL服务器版本相对应的手册,在第1行的''附近使用正确的语法。 – user2138541 2013-03-06 06:08:11

+0

@Mhhir在“...'$ ID'”中,字符串用双引号分隔,变量替换完成。单引号只是字符串的一部分,并不会阻止变量替换(如'...“$ ID”') – 2013-03-06 06:17:29

0

尝试只需$ ID使用此

<?php 
$query = "SELECT * FROM $table_name WHERE post_ID = "$ID; 
$data = mysql_query($query); 
?> 

虽然,你必须使用库MySQLi而不是MySQL的功能。

快乐编码!

0

确保首先设置$_POST['ID']

$ID = isset($_POST['ID']) ? $_POST['ID'] : <some_values>; #for debugging purpose 

然后执行:

$data = mysql_query("SELECT * FROM $table_name WHERE post_ID = '".$ID."'") or 
     die(mysql_error()); 
+0

变量没有被设置...现在我不知道我的SQL表是如何被填充.. – user2138541 2013-03-06 06:46:54

+0

尝试检查你的HTML表单中输入值。也许你错过了那部分。 – foxns7 2013-03-06 06:53:17

1

下面是一些问题的代码。因为你的PHP变量不会在MySQL查询中工作。所以你必须把变量传递给它。用一个单引号,你可以像这样传递它。和

$ data = mysql_query(“SELECT * FROM'$ table_name'WHERE post_ID ='1'”)或 die(mysql_error());

谢谢