这段代码应该将人的在线名字输入到数据库中。如果已经有记录,它应该更新最新的名称。 phpmyAdmin中表格的名称是names。
<?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);
?>
我通过在PHPMyAdmin中手动更改“steamname”行的值为“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页面时,我的数据库就会发生以下变化。 运行脚本后数据库的样子 不确定为什么它没有更新 - 还有为什么有这么大的空间?
id
,否则重复键将无法匹配 ->"INSERT INTO names (id, steamname) VALUES ($profile->steamId,'$profile->name') ON DUPLICATE KEY UPDATE steamname = VALUES(steamname)"
。请注意,$profile->steamId
/$profile->name
是您的id
和更新后的name
值的猜测。 - Seanid
是自动递增的,所以不需要它,但问题在于永远不会与主键匹配,因此它将始终“插入”新行,而永远不会“更新”行。必须重新考虑该答案。 - Sean$profile
变量而导致的;它是包含在SimpleXMLElement
实例中父元素中的空格。 - user1433150