Php 如何将varchar转换为tinyint

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

我试图从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代码

<?
 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
或您想要的任何内容。还有一件事需要注意,像这样的变量通常是小写的。大写的变量往往“意味着”其他东西。