mysql - PHP 强制 var 具有某种类型

标签 mysql variables string

这可能是一个愚蠢的问题,但我也可能会这么做:)

有没有远方给力

$tel1 = '05';// string
settype($tel1,'string');
$tel1 = 06;//either throw error, or convert it to string automatically.
var_dump($tel1);//(string [2]) 05

上面的代码是我的想法,所以可能不准确,但我需要将变量保留为字符串而不是数字,因为我做了一些愚蠢的事情,现在我的电话号码失去了前导 0 :- (

n我不会重写它,因为它会与其他数字类型混淆,b4你问这是数据库检查它是否是数字值的自动化服务,

更新 这就是问题所在

function escape($str){
   if(is_numeric($str)){
       return $str;
   }else{
       return "'".mysql_real_escape_string($str).'\'';
   }
}
$tel1 = "06";
$sql = 'SELECT * FROM blabla WHERE id = '.escape($tel1).'';
//above is same as below
$sql = 'SELECT * FROM blabla WHERE id = 06 ';

我无法更改 scape 函数内的任何内容,因为网站上的其他输入正在使用此函数,我不想弄乱他们的验证。

最佳答案

您使用 is_numeric 测试数字内容,而不是整数类型。但随后您采用一个名为 $str 的变量,这意味着您希望它是一个字符串。

也许使用:

function escape($val) {
   if (is_numeric($val) && !is_string($val)) {
       return $val;
   }
   else{
       return "'" . mysql_real_escape_string($val) . '\'';
   }
}

现在字符串将被转义并加引号,但如果它们仅包含数字内容,则不会。

关于mysql - PHP 强制 var 具有某种类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5885042/

相关文章:

mysql - 用户作为数据库用户或用户作为用户表、审计表中的一行。

python - PySQLPool 和 Celery,正确的使用方法?

php - 在 php/pdo 和三个表中创建一个 friend 列表

mysql - spring-mvc 和 hibernate 与 mysql 数据库集成

templates - 在 Twig 的父作用域中设置变量

java - 关于如何在 Java 程序中创建用户定义变量的想法?

c++ - vector 的复制/移动赋值后底层存储会发生什么?

R strip拆分数据框中的一列

tensorflow - 使用 tf.control_dependencies 的相同代码的不同结果

javascript - 我如何编写名为 validate(z) 的函数,该函数接受一个字符串作为参数,如果包含 1 "@"符号,则返回 true ,并且至少包含 1 ".",否则返回 false