【问题标题】:Different result types for @-parameters between MySQL 5.0 and 5.1MySQL 5.0 和 5.1 之间 @-parameters 的不同结果类型
【发布时间】:2011-12-12 12:09:13
【问题描述】:

我以下面的语句为例:

<?php
  $link = mysql_connect( '127.0.0.1', 'user', 'pass' );
  mysql_query('SET @a = "test";', $link);
  $r = mysql_query('SELECT @a;', $link);
  echo mysql_field_type($r,0);
?>

当我在 MySQL 5.0 上执行此操作时,输出为“字符串”。 当我在 MySQL 5.1 上执行此操作时,输出为“blob”。

这是一个错误吗?或者是否有改变这种行为的设置?我的外部应用程序需要一个字符串,现在由于这种新的结果类型而失败。希望有人能帮我解决这个问题。

【问题讨论】:

标签: mysql types


【解决方案1】:

不是真正的答案,而是一种解决方法

$r = mysql_query('SELECT CAST(@a AS VARCHAR(255)) as outcome;', $link);

根据 5.0 文档:http://dev.mysql.com/doc/refman/5.0/en/user-variables.html

如果在结果集中选择了用户变量的值,则将其作为字符串返回给客户端。

5.1、5.5 和 5.6 文档说的完全一样。

【讨论】:

  • Tnx 为您的解决方法。我使用 Delphi 作为客户端,所以这将是一个非常大的解决方法。如果有解决方案会更好。
  • @Marco,Delphi和php都接受SQL,那么改SQL有什么问题呢?只需在 Delphi 中使用 TQuery 而不是 TTable。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-09
  • 1970-01-01
  • 2015-12-22
相关资源
最近更新 更多