Является ли мой код/синтаксис неправильным? Я не уверен, что не так, и я новичок в этом. Я создал таблицу в PHPMyAdmin. Он имеет две колонки. Один из них - «id» и является основным ключом/автоматическим приращением. Другой столбец - «имя_файла».PHP MySQL Вставить Into & On Повторяющиеся проблемы с ключами
Этот код должен занять имя пользователя и ввести его в базу данных. Если уже есть запись, она должна обновлять ее в любом случае с тем же самым/последним именем.
Имя таблицы в PhpMyAdmin является имена
<?php
// Capture person's name from XML file
$profile = simplexml_load_file('UrlGoesHere.Com/?xml=1', 'SimpleXMLElement', LIBXML_NOCDATA);
echo (string)$profile->steamID;
//Enter name into databse and overwrite it if same/duplicate
$con=mysqli_connect("localhost","username","password","databaseName");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
// Perform queries
mysqli_query($con,"INSERT INTO names (steamname) VALUES ('$profile') ON DUPLICATE KEY UPDATE steamname = VALUES('$profile')");
mysqli_close($con);
?>
Я проверил это вручную изменить значение строки в «steamname» в PHPMyAdmin к «woogy» и затем запустить этот сценарий, чтобы увидеть если он обновит значение базы данных ... ничего не происходит. Он должен обновить «woogy» до собственного имени.
----------- --------------- Обновления
Привет всем. Спасибо за вход. Теперь у меня есть мой код следующим образом. Извините, если все еще не так. Я изучаю.
<?php
$profile = simplexml_load_file('http://steamcommunity.com/profiles/76561198006938281/?xml=1', 'SimpleXMLElement', LIBXML_NOCDATA);
echo (string)$profile->steamID;
$con=mysqli_connect("localhost","userHere","passwordHERE","DBName");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
// Perform queries
mysqli_query($con,"INSERT INTO names (steamname) VALUES ('$profile') ON DUPLICATE KEY UPDATE ID = LAST_INSERT_ID(ID), steamname = VALUES(steamname)");
mysqli_close($con);
?>
Это как база данных выглядит перед запуском скрипта: (woogy должен измениться Chatyak)
Теперь, когда я запускаю страницу PHP, это то, что происходит с моей базой данных ,
How database looks after running script
Не знаю, почему он не обновлялся - а также, почему существует такое огромное пространство?
Вы хотите использовать именованные параметры в своих операторах SQL. – FloatingRock
Вам нужно включить 'id' в запрос, так как без него дублирующий ключ никогда не сопоставляется ->' 'INSERT INTO имена (id, steamname) VALUES ($ profile-> steamId, '$ profile-> name') ON DUPLICATE KEY UPDATE steamname = VALUES (имя_файла) ". обратите внимание, что '$ profile-> steamId' /' $ profile-> name' являются догадками относительно того, что означают ваши 'id' и обновленные значения' name'. – Sean
@Sean, 'ID' является автоматическим приращением. В этом случае это не нужно в инструкции 'INSERT'. Правильный запрос INSERT OP. – Rahul