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

标签 php mysql datagrid livecode

当我尝试从某些列获取值并使用 从 blablatable 中选择 2010,2011 然后我只得到表名(在浏览器中检查)。 当我使用 SELECT * FROM blablatable 时 然后我得到(当然是一切),但是年份列的内容显示正确(在浏览器中检查)。 现在同一个表中的其他列显示正确,我使用此 php 脚本将数据获取到 Livecode 中的数据网格中。除了年份列之外,一切正常。然后数据网格给出错误。 我不明白为什么它给出表格而不是给出数据。 我已经在 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 * 可以正常工作吗? 我不能使用这个,我必须使用列名称。

任何帮助将不胜感激。

谢谢。

最佳答案

这部分代码SELECT 2010,2011

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

"Identifiers may begin with a digit but unless quoted may not consist solely of digits."

将这些列名称括在刻度中。

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

旁注:从这个答案中复制/粘贴它。刻度线和常规引号看起来很相似,但并不相同。

示例,这将失败:

SELECT '2010','2011'

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

我看到很多问题,运算符(operator)将使用答案中的代码,并使用常规引号,而不是勾号,而不是从答案的代码本身复制/粘贴。


脚注:

您应该考虑使用mysqli with prepared statements ,或PDO with prepared statements它们更安全

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

引用文献:

关于php - SELECT * FROM 给出其他结果,然后 SELECT 2010,2011 FROM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30787505/

相关文章:

c# - WPF 数据网格 : field value in Edit mode not available outside row

php - 如何衡量密码的强度?

mysql - 从数据库中获取连胜记录

Mysql 使用另一个表中的信息从表中删除

mysql - 具有 250 列的 MySQL 表会导致性能问题吗?

datagrid - 删除项目后 Primefaces dataGrid 内容不会更新

c# - 过滤和 ICollectionView 过滤器 WPF

php - 使用分离层与数据库交互(PHP 和 WordPress)

php - 如何扩展 Adminer 以支持带登录的 SQLite 数据库?

php - 从下拉列表中选择特定项目时从数据库表填充表数据?