PHP同时更新许多行

时间:2016-03-09 16:01:31

标签: php mysqli rows

我有一张表插入了大约1000行。它们使用自己的ID和特定代码进行分类,使其独一无二。

一个简单的例子是:

id    |  site  | player    |  char          |
1     |  site 1| play1     |                |
2     |  site 2| play1     |                |
3     |  site 3| play1     |                |
4     |  site 4| play1     |                |
5     |  site 2| play2     |                |
6     |  site 2| play3     |                |
7     |  site 3| play2     |                |
8     |  site 4| play2     |                |
9     |  Site 1| play2     |                |
10    |  Site 2| play4     |                |

我需要按网站更新播放器信息。所以我选择了网站(示例网站2),然后创建了一个带有播放器名称的表单和一个用于插入数据的输入框:

网站2编辑:

Play1 - Char [INPUTBOX]
Play2 - Char [INPUTBOX]
Play3 - Char [INPUTBOX]
Play4 - Char [INPUTBOX]

最好的方法是什么,而不是创建一个代码来手动更新每个(并且这不是一个好主意,因为它可能同时进行1000或5000次编辑)来编辑放置在INPUTBOX中的所有信息每个"玩"在Site2中生成?

有没有可以使用的示例代码?等待你的建议。谢谢!

注意:我更喜欢使用这种方式,因为它基本上是来自其他来源的复制/过去更新,因此从同一站点同时更新所有数据比更新每个用户快得多个别按地点。

1 个答案:

答案 0 :(得分:0)

最好的办法是将当前播放器信息从数据库中提取出来,然后使用当前信息附加新列。

$db = mysqli_connect("host", "user", "pass", "name");
foreach($db->query("select * from table") as $row):
    $player = $row['player'];
    $sql = "INSERT INTO table (player,char) VALUES ('$player', '$char')";
    if(!$db->query($sql)): echo $player." upload failed..."; endif;
endforeach;

所以我们为每个人取出了这些名字,我建议你可以制作Array每个玩家将拥有的ORDER BY个字符,然后在 @Override public void onResume() { super.onResume(); if (camera == null) { initalizeCamera(); cameraView.setmCamera(camera); Log.d("Tag", "onResume: Cam null;"); } else { Log.d("Tag", "onResume: Cam not null;"); } Log.d("Tag", "onResume: "); } @Override public void onPause() { super.onPause(); cameraView.stopUserPreview(); camera.stopPreview(); camera.release(); camera = null; Log.d("Tag", "onPause: "); } @Override public void onStop() { super.onStop(); cameraView.stopUserPreview(); Log.d("Tag", "onStop: "); } @Override public void onStart() { super.onStart(); Log.d("Tag", "onStart: "); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment return inflater.inflate(R.layout.fragment_video, container, false); } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); Log.d("Tag", "onViewCreated: "); surfaceParent = (FrameLayout) view.findViewById(R.id.surface_parent); initalizeCamera(); cameraView = new CameraView(getContext()); cameraView.setmCamera(camera); ((MainActivity) getActivity()).setWidth((int) (480 * getResources().getDisplayMetrics().density)); ((MainActivity) getActivity()).setHeight((int) (640 * getResources().getDisplayMetrics().density)); FrameLayout.LayoutParams paramsSurface = new FrameLayout.LayoutParams(((MainActivity) getActivity()).getWidth(), ((MainActivity) getActivity()).getHeight()); paramsSurface.gravity = Gravity.CENTER_HORIZONTAL; cameraView.setLayoutParams(paramsSurface); surfaceParent.addView(cameraView); /*ViewTreeObserver vto = cameraView.getViewTreeObserver(); vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { Log.d("Tag", "onGlobalLayout: " + cameraView.getWidth() + " " + cameraView.getHeight()); } });*/ } private void initalizeCamera() { try { camera = Camera.open(); camera.setDisplayOrientation(90); Camera.Parameters params = camera.getParameters(); params.setPreviewSize(640, 480); camera.setParameters(params); camera.setPreviewCallback(this); } catch (Exception e) { Log.d("Tag", "initalizeCamera: Camera exception"); } } 中查询它。匹配你的数组。

希望这有帮助。 (这种方式是自动的,它将在脚本运行时为每个玩家执行。)