【问题标题】:SELECT * FROM giving other result then SELECT 2010,2011 FROMSELECT * FROM 给出其他结果然后 SELECT 2010,2011 FROM
【发布时间】:2015-06-11 17:27:28
【问题描述】:

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

这些是我使用的 2 个 php 测试脚本的一部分: _______首先是只给出表名的脚本__notgood___

$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 * 可以正常工作吗? 我不能使用这个,我必须使用列名。

我们将不胜感激。

谢谢。

【问题讨论】:

  • “那么数据网格出现错误” - 存在?
  • 不相关但你不应该使用 mysql 扩展。它已被弃用。改用 mysqli 或 pdo
  • 你试过 $query_rsUser = ("SELECT '2010' ,'2011' FROM blabla_table ORDER BY id"); ?
  • 如果可以的话,你应该stop using mysql_* functions。它们不再被维护并且是officially deprecated。改为了解 prepared statements,并考虑使用 PDO,it's really not hard
  • 谢谢,我看看能不能实现。

标签: php mysql datagrid livecode


【解决方案1】:

你这部分代码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 版本中删除。

参考文献:

【讨论】:

  • 我做了一个测试并将 2010 列更改为 20_10,然后使用相同的脚本(相应地将 2010 更改为 20_10)它确实有效。 @Fred 数据网格错误是:列模板的行为发生错误。块:找不到背景。我关注了这个网站上的信息:learninglivecode.blogspot.nl/2015/04/…,它很好地用来解决使用 PHP 脚本访问数据库并将信息输入 Livecode 的难题。但也许有比这更好的解决方案。谢谢大家,我将再次阅读每个答案!
  • @JeeJeeStudio 不客气。但是请尝试使用我的回答中概述的刻度。
  • 我做了 Fred 并且成功了!在 1 左侧的键盘上找到它。很棒的提示!还要检查其他一些不使用 MYSQL 命令 bu pdo 的建议。也许到时候我可以一块一块地改变它。非常感谢您的帮助。
  • 好的,感谢 Fred 也祝你一切顺利:)
  • @JeeJeeStudio 非常欢迎您,谢谢,也祝您一切顺利,干杯!
猜你喜欢
  • 2011-03-22
  • 2010-11-03
  • 1970-01-01
  • 1970-01-01
  • 2015-02-09
  • 2014-02-14
  • 1970-01-01
  • 2012-03-16
相关资源
最近更新 更多