小编And*_*ock的帖子

php sql查询删除前导0

我有基本的代码

$query = mysql_query('SELECT `foo` FROM `Bar` WHERE id=1', $conn)
$result = mysql_fetch_assoc($query)
$val = $map[$result['foo']];
Run Code Online (Sandbox Code Playgroud)

其中foo的类型是CHAR(2),而id = 1的值是07

但是返回的值只有7,这在将其用作关联数组的索引时会导致问题.

PhpMyAdmin显示07的正确值

使用mysql_fetch_object时也得到相同的结果

来自评论:var_dump($ result)的结果是

array
  'foo' => string '7' (length=1)
Run Code Online (Sandbox Code Playgroud)

和var_dump($ map)是数组'07'=>字符串'bar'(长度= 3)

编辑2:我刚刚发现了一个更大的问题:以0开头的电话号码也会受到影响.没有简单的方法(如下面建议的str_pad)来解决这个问题

编辑3:服务器是Windows 7,xampp 1.7.7和PHP 5.3.8数据库是InnoDB,带有latin1_swedish_ci和COMPACT行格式

CREATE TABLE `Bar` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `foo` char(2) DEFAULT NULL
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Run Code Online (Sandbox Code Playgroud)

编辑4: SELECT CONCAT("0", foo) FROM Bar WHERE id = 55返回07

php mysql

5
推荐指数
1
解决办法
340
查看次数

使用带有空格的文件中的参数在bash脚本中调用函数

我想执行带有从文件中读取的参数的命令。正常工作,直到其中一个参数需要有一个空格。

我曾尝试用引号和反斜杠对单词进行分组,但都没有用。

我所追求的功能完全是xargs功能,只是我需要调用函数而不是命令,因为它依赖于脚本中其他位置设置的其他变量

脚本:

do_echo() {
    echo '$1:' $1
    echo '$2:' $2
}
line=`cat input.txt` #cat used for simplicity, can have more than 1 line
do_echo $line
Run Code Online (Sandbox Code Playgroud)

input.txt:

"hello world" "hello back"
Run Code Online (Sandbox Code Playgroud)

预期结果:

$1: hello world
$2: hello back
Run Code Online (Sandbox Code Playgroud)

观察结果:

$1: "hello
$2: world"
Run Code Online (Sandbox Code Playgroud)

编辑:

我正在使用它通过不同的输入多次执行同一命令。每行最多有15个参数,最多可以有50行。

表格格式是理想的,尽管将每个参数放在一行上的当前答案会起作用。

bash shell

5
推荐指数
1
解决办法
2548
查看次数

标签 统计

bash ×1

mysql ×1

php ×1

shell ×1