SELECT * FROM给出其他结果然后SELECT 2010,2011 FROM

时间:2015-06-11 17:27:28

标签: php mysql datagrid livecode

当我尝试从某些列中获取值并使用时 SELECT 2010,2011 FROM blablatable 然后我只得到表名(在浏览器中检查)。 当我使用SELECT * FROM blablatable 然后我得到(当然一切)然后年份列的内容显示正确(在浏览器中检查)。 现在同一个表中的其他列显示正确,我使用这个PHP脚本将数据导入Livecode中的数据网格。除了年份列之外,一切正常。然后datagrid给出了一个错误。 我不明白为什么它给表而不是给出数据。 我已经在Livecode中使用相同的调整脚本,并且工作正常。所以测试了一些东西,要么是PHP脚本,要么是数据库给出了麻烦。

这些是我使用的2个php测试脚本的一部分: _______首先只提供表名的脚本____很好___

$hostname_connLivecode = "localhost";
   $database_connLivecode = "blabla";
   $username_connLivecode = "blabla";
   $password_connLivecode = "blabla";
   $connLivecode = mysql_pconnect($hostname_connLivecode, $username_connLivecode, $password_connLivecode) or trigger_error(mysql_error(),E_USER_ERROR); 

//2. Perform database query

mysql_select_db($database_connLivecode, $connLivecode);
$query_rsUser = ("SELECT 2010,2011 FROM blabla_table ORDER BY id");

$rsUser = mysql_query($query_rsUser, $connLivecode) or die(mysql_error());
$row_rsUser = mysql_fetch_assoc($rsUser);
$totalRows_rsUser = mysql_num_rows($rsUser);

if ($totalRows_rsUser == 0) {
    echo "no data found";
} 


do {
  echo $row_rsUser["id"]."\t".$row_rsUser["2010"]."\t".$row_rsUser["2011"]."\n";
   } while ($row_rsUser = mysql_fetch_assoc($rsUser)); 

?>

____________现在提供正确信息的脚本_____

$hostname_connLivecode = "localhost";
$database_connLivecode = "blabla";
$username_connLivecode = "blabla";
$password_connLivecode = "blabla";
$connLivecode = mysql_pconnect($hostname_connLivecode, $username_connLivecode, $password_connLivecode) or trigger_error(mysql_error(),E_USER_ERROR); 

//2. Perform database query

mysql_select_db($database_connLivecode, $connLivecode);
$query_rsUser = ("SELECT * FROM blabla_table ORDER BY id");

$rsUser = mysql_query($query_rsUser, $connLivecode) or die(mysql_error());
$row_rsUser = mysql_fetch_assoc($rsUser);
$totalRows_rsUser = mysql_num_rows($rsUser);

if ($totalRows_rsUser == 0) {
    echo "no data found";
} 


do {
  echo $row_rsUser["id"]."\t".$row_rsUser["2010"]."\t".$row_rsUser["2011"]."\n";
   } while ($row_rsUser = mysql_fetch_assoc($rsUser)); 

?>

有谁理解为什么SELECT *可以正常工作? 我不能使用它,我必须使用列名。

任何帮助将不胜感激。

感谢。

1 个答案:

答案 0 :(得分:4)

代码的这一部分SELECT 2010,2011

来自手册http://dev.mysql.com/doc/refman/5.1/en/identifiers.html

  

"标识符可以以数字开头,但除非引用可能不仅仅包含数字。"

将这些列名称包装在刻度线中。

SELECT `2010`,`2011`
  • 由于您没有发布错误消息。

旁注:从此答案中复制/粘贴它。蜱和常规报价看起来很相似,但不一样。

示例,将失败:

SELECT '2010','2011'

因为它们是常规'引号并且由MySQL翻译为文字字符串。

我看到许多问题,OP将使用答案中的代码,并使用常规引号而不是刻度,而不是从答案代码本身复制/粘贴。

<强>脚注:

您应该考虑使用mysqli with prepared statementsPDO with prepared statements他们更安全

  • mysql_函数现已弃用,将从以后的PHP版本中删除。

参考(S):