让我们说我们echo看起来像这样
echo '<p> Usr1 has '. $array[1]['amount']. ' '. $array[1]['item']. ' in Slot 2 <br \>';
Run Code Online (Sandbox Code Playgroud)
注意' '两个数组/变量之间的关系.这样做有更好看和更优化的方法吗?
我正在慢慢地尝试理解并从MySQL切换到PDO/MySQLi,现在我想尝试如何使用PDO.
我想问你将如何使用$_GET,通常设置用户ID(数字),在execute.据我所知execute它只接受字符串,所以我尝试了PDO::PARAM_INT
$q = $dbh->prepare('SELECT `content` FROM `inventory` WHERE `id` = ?');
$q->execute(array($_GET['u_id'], PDO::PARAM_INT));
Run Code Online (Sandbox Code Playgroud)
不幸的是它没有解决它.它缺少参数吗?它返回以下内容:
Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in X on line Y
Run Code Online (Sandbox Code Playgroud) 我正在使用foreach来浏览ListView,其项目是从XML文件加载的.然后我正在使用项目名称到我的网页进行异步HTTPRequest以获取JSON字符串,到目前为止它工作得很好.
HttpClient client = new HttpClient();
foreach (ListViewItem item in lV_Items.Items)
{
JObject o = JObject.Parse(client.GetStringAsync("http://000.000.000/?item=" + HttpUtility.UrlEncode(item.Text)).Result);
}
Run Code Online (Sandbox Code Playgroud)
然后我将JSON中的新值编辑为SubItem项
string amount= (string)o["amount"];
item.SubItems[1].Text = amount;
Run Code Online (Sandbox Code Playgroud)
我在计时器中运行此代码,每分钟重复一次.然而,即使我阅读了很多关于例如ListView.BeginUpdate或将HTTPRequest放在另一个线程中的事情,我几天都在努力进行性能优化.首先,我不太明白为什么GUI在做foreach时会冻结.鉴于异步HTTP请求不在主线程上工作(至少我希望这是针对异步代表的),它不应该冻结请求.编辑SubItems的操作也应该非常快,特别是因为List中只有大约10个项目.
我想过将项目加载到List(动态集合)而不是直接加载ListView.然后我将运行1个定时器,它定期将List发送到另一个Thread,然后Thread刷新列表中的值并将其发送回主窗体.在Mainform中有第二个计时器,它定期将List放入ListView(仅用于可视化).两个定时器,因为我认为如果将上述两个都放入一个定时器,定时器将等待线程完成,导致仍然冻结应用程序.
我想这是一个想法,但是有很多不透明的工作已经完成,而且维护/调试可能会更难.任何关于我应该如何做以及什么会更好的想法都将很高兴.