Php MySQL如何检查字段中的值是整数还是文本
请在我的数据库中有一个类型为Php MySQL如何检查字段中的值是整数还是文本,php,mysql,text,integer,Php,Mysql,Text,Integer,请在我的数据库中有一个类型为text的字段,但该字段可能包含一些整数值 当我从这个字段中选择数据时,我应该区分是整数还是文本(只是为了处理像)这样的mysql操作),所以我尝试了: $clause = ""; if(is_int($_GET['f'])) $clause = " AND myValue < ".$_GET['f']." "; else $clause = " AND myValue = '".$_GET['f']."' "; $ds->query("
text
的字段,但该字段可能包含一些整数
值
当我从这个字段中选择数据时,我应该区分是整数还是文本(只是为了处理像<或>)这样的mysql操作),所以我尝试了:
$clause = "";
if(is_int($_GET['f']))
$clause = " AND myValue < ".$_GET['f']." ";
else
$clause = " AND myValue = '".$_GET['f']."' ";
$ds->query("SELECT * FROM myTable WHERE id = 1 ".$clause);
$clause=”“;
if(is_int($_GET['f']))
$clause=“和myValue<”$\u GET['f']”;
其他的
$clause=“AND myValue=”。$\u GET['f']。“”;
$ds->query(“从myTable中选择*,其中id=1”。$子句);
请注意引号,以防它不是整数
但这不起作用,我认为这是正常的,因为字段的类型为text
请你有解决这个问题的办法。提前谢谢 texttype列始终将其值视为文本(字符串),因此无论存储的值是什么,都需要将其括在
中。
。MySQL可以将数字作为字符串进行比较
另外,is_int
不适合检查$\u GET
值,因为它们被视为字符串。改为使用是数字的
但是请注意对您的问题的评论,如果您需要在数据库中单独存储整数和/或字符串,则重新设计更合适。text
类型列始终将其值视为文本(字符串),因此无论存储的值是什么,都需要将其括在'
中。MySQL可以将数字作为字符串进行比较
另外,is_int
不适合检查$\u GET
值,因为它们被视为字符串。改为使用是数字的
但请注意问题的注释,如果需要在数据库中单独存储整数和/或字符串,则重新设计更合适。尝试以下方法:
$clause = "";
if(is_numeric($_GET['f']))
$clause = " AND myValue < ".$_GET['f']." ";
else
$clause = " AND myValue = '".$_GET['f']."' ";
$ds->query("SELECT * FROM myTable WHERE id = 1 ".$clause);
$clause=”“;
如果(是数字($\u GET['f']))
$clause=“和myValue<”$\u GET['f']”;
其他的
$clause=“AND myValue=”。$\u GET['f']。“”;
$ds->query(“从myTable中选择*,其中id=1”。$子句);
试试这个:
$clause = "";
if(is_numeric($_GET['f']))
$clause = " AND myValue < ".$_GET['f']." ";
else
$clause = " AND myValue = '".$_GET['f']."' ";
$ds->query("SELECT * FROM myTable WHERE id = 1 ".$clause);
$clause=”“;
如果(是数字($\u GET['f']))
$clause=“和myValue<”$\u GET['f']”;
其他的
$clause=“AND myValue=”。$\u GET['f']。“”;
$ds->query(“从myTable中选择*,其中id=1”。$子句);
也许是您的解决方案。
Mysql处理数据类型和运算符,例如有时是隐式的
SELECT 1+'1';
-> 2
我在玩弄我的数据库。列a作为varchar。然后输入从1到5的5个值。如果我从a>2的mytable中查询select*,我会得到正确的结果(条目“1”不会显示。如果我输入了一个像“b”这样的字符的新行,则结果中不包含该字符。
或者您可以使用显式类型转换
亲切问候也许是您的解决方案。
Mysql处理数据类型和运算符,例如有时是隐式的
SELECT 1+'1';
-> 2
我正在处理我的数据库。a列作为varchar。然后我输入5个从1到5的值。如果我从a>2的mytable中查询select*,我会得到正确的结果(条目“1”不会显示。如果我输入一个像“b”这样的字符的新行,则结果中不包含该字符。
或者您可以使用显式类型转换
善意的问候如果你可以在DB字段中同时包含整数和字符串,并且你必须以不同的方式解释它们,那么你就犯了一些错误。这不是一个规范化的结构。我建议重新设计。为不同的数据创建两列,并根据@ppeterka使用它。为varchar和anot创建一列这个字段、这个文本和这些整数是什么意思?你能把表格结构粘贴到这里吗?如果是数字,你还必须检查db字段。你可以在这里摆弄;o)如果在DB字段中可以同时包含整数和字符串,并且必须以不同的方式解释这两个值,那么您就犯了很大的错误。这不是一个规范化的结构。我建议重新设计。为不同的数据创建两列,并按照@ppeterka的要求使用。一列用于varchar,另一列用于int。这是什么这个字段、这个文本和这些整数的含义是什么?你能把表结构粘贴到这里吗?如果是数字,你还必须检查db字段。你可以在这里摆弄;o)