Похоже, что json_decode () не может обработать данные в этом параметре записи.Добавьте некоторую обработку ошибок в ваш скрипт.
$test = json_decode($json, true);
if ( is_null($test) ) {
die('data is not encoded as valid json');
}
else if ( !is_array($test) ) {
die('Unexpected data structure. Array expected.');
}
Возможно, вас также заинтересует json_last_error ()
: возможно, это проблема с кодировкой.Поскольку у вас нет доступа к json_last_error (), вы можете проверить строку и кодировку «вручную», например,
<code>if ( is_null($test) ) {
// <--- for debugging purposes only
echo '<pre>Debug: $json=';
var_dump($json);
echo 'hex=';
for($i=0; $i<strlen($json); $i++) {
printf('%02X ', ord($json[$i]));
}
echo '
';// только для целей отладки -> die ('данные не закодированы как действительные json');
Вы также должны использовать mysql_real_escape_string () при смешивании значений в виде строковых литералов в операторе sql, см. CWE-89: неправильная нейтрализация специальныхЭлементы, используемые в команде SQL («SQL-инъекция»)
$mysql = mysql_connect('localhost','user','password') or die(mysql_error());
mysql_select_db('products', $mysql) or die(mysql_error($mysql));
...
$sql = "
INSERT INTO
suppliersProducts
(product_id, supplier_id)
VALUES
(
'" . mysql_real_escape_string($key['value'], $mysql) . "'
, '" . mysql_real_escape_string($uid, $mysql) . "'
)
";
$query = mysql_query($sql, $mysql) or die(mysql_error($mysql));
Или даже лучше: используйте подготовленные параметризованные запросы, см., Например, PDO - подготовленные операторы и хранимые процедуры