Я пытаюсь ввести некоторые данные в таблицы оракула, и я получаю код ошибки ORA-01722. Я считаю, что это из-за идентификатора Trader, который является числом, но говорит, что он не может преобразовать строку в число. Код ниже.
форма
<form method="post" action="recipesql.php" >
<table align="center">
<tr>
<td align="right">Recipe Name:</td>
<td align="left"><input type="text" name="RecipeName"></td>
</tr>
<tr>
<td align="right">Media Type:</td>
<td align="left"><input type="text" name="MediaType"></td>
</tr>
<tr>
<td align="right">Recipe:</td>
<td align="left"><input type="text" name="Recipe" /></td>
</tr>
<tr>
<td align="right">Video Link (e.g /embed/12345):</td>
<td align="left"><input type="text" name="Link"></td>
</tr>
<tr>
<td align="right">Trader ID:</td>
<td align="left"><input type="number" name="TraderID"></td>
</tr>
</table>
<input type="submit" value="Submit" name="Submit">
</form>
PHP
//include connection
include ('PHP/connection.php');
//has form been submitted?
if(isset($_POST['Submit'])){
$RecipeName=$_POST['Name'];
$MediaType=$_POST['MediaType'];
$Recipe=$_POST['Recipe'];
$Link=$_POST['Video_Link'];
$TraderID=$_POST['Trader_ID'];
//Insert data
$query = "INSERT INTO MEDIA
(Media_Id, Name, MediaType, Recipe, Video_Link, Trader_ID)
VALUES
('MEDIA_seq.nextval','$RecipeName','$MediaType','$Recipe','$Link','$TraderID')";
$runquery = oci_parse($connection,$query);
oci_execute($runquery);
}
//to check if the if statement is working
else
{
echo "Error";
}
Код ошибки Предупреждение: oci_execute() [function.oci-execute]: ORA-01722: неверный номер в recipesql.php в строке 19
Думайте, что это должно быть:
$query = "INSERT INTO MEDIA (Media_Id, Name, MediaType, Recipe, Video_Link, Trader_ID)
VALUES (MEDIA_seq.nextval,'$RecipeName','$MediaType','$Recipe','$Link','$TraderID')";
т.е. MEDIA_seq.nextval
не заключен в ''
. В противном случае он интерпретируется как VARCHAR2
и вставка его в столбец NUMBER
вызывает ORA-01722
.