Php 如何将varchar转换为tinyint
我试图从php在sql server中插入我的表,但我不知道如何从查询中修复它。当我尝试运行查询时,会出现一个错误,通知我无法转换数据类型 像这样:Php 如何将varchar转换为tinyint,php,mysql,Php,Mysql,我试图从php在sql server中插入我的表,但我不知道如何从查询中修复它。当我尝试运行查询时,会出现一个错误,通知我无法转换数据类型 像这样: Conversion failed when converting the varchar value '1 CASE When 1 = 1 Then Default ELSE Piority + CONVERT (Varchar(5),1) END' to data type tinyint. 这是我所有的php代码 <? includ
Conversion failed when converting the varchar value '1 CASE When 1 = 1 Then Default ELSE Piority + CONVERT (Varchar(5),1) END' to data type tinyint.
这是我所有的php代码
<?
include "new.php";
$ID_Person = $_POST['IDPerson'];
$Number_Phone_Person = $_POST['NumberPhonePerson'];
$Piority_Phone_Person = $_POST['PiorityPhonePerson'];
$Default = 'Default';
$Piority = 'Piority';
$response = array();
if (isset($ID_Person) &&
isset($Number_Phone_Person) &&
isset($Piority_Phone_Person)
)
{
$query = "INSERT INTO T_Person_Phone
(
ID_Person,
Number_Phone_Person,
Piority_Phone_Person
)
VALUES
(
'$ID_Person',
'$Number_Phone_Person',
'$Piority_Phone_Person
CASE When $Piority_Phone_Person = 1 Then $Default
ELSE $Piority + CONVERT (Varchar(5),$Piority_Phone_Person) END');";
$hasil = sqlsrv_query($conn,$query,$response);
if($hasil)
{
$response["success"] = 1;
$response["message"] = "User successfully created.";
} else
{
$response["success"] = 0;
$response["message"] = "Eksekusi error.";
die( print_r( sqlsrv_errors(), true));
}
} else
{
$response["success"] = 0;
$response["message"] = "Data gagal disimpan.";
}
// echoing JSON response
echo json_encode($response);
?>
首先也是最重要的一点是,您用引号封装了SQL语句,因此它从字面上解释了整个字符串。也就是说,MySQL并不认为您需要一个大小写开关,而是一个包含这些单词的字符串。在tinyint列中插入字符串无效,因此会出现错误
因此,改变这一点:
'$Number_Phone_Person',
'$Piority_Phone_Person
CASE When $Piority_Phone_Person = 1 Then $Default
ELSE $Piority + CONVERT (Varchar(5),$Piority_Phone_Person) END')
为此:
'$Number_Phone_Person',
CASE WHEN $Piority_Phone_Person = 1 THEN $Default
ELSE $Piority + CONVERT (Varchar(5),$Piority_Phone_Person) END)
注意:我不完全确定你的整个$Piority+CONVERT(Varchar(5),$Piority\u Phone\u Person)
-该语句可能同样无效。它在关键字“Default”附近显示了不正确的语法。什么意思?“Default”也不是tinyint列的有效值。您需要实际输入有效的数字。由于您使用的是字符串替换,我会将您的$Default='Default'
行更改为$Default=0
或您想要的任何内容。还有一件事需要注意,像这样的变量通常是小写的。大写的变量往往“意味着”其他东西。